套接字实际上和固定电话并无太大区别,。电话机可以同时用来拨打或接听,但对套接字而言,拨打和监听是有区别的。
描述Python用于接听的套接字创建过程
1.调用 socket
函数(安装电话机)时进行的对话
问
:"接电话需要准备什么"?答
:“当然是电话机!”
有了电话机才能安装电话,创建相当于电话机的套接字
import socket
s = socket.socket()
2. 调用bind
函数(分配电话号码)时进行的对话
问
:"请问您的电话号码是多少?"答
:"我的电话号码是123-1234"
套接字同样如此。就像给电话机分配电话号码一样(虽然不是真的把电话号码给了电话机),利用以下函数给创建好的套接字分配地址信息(IP地址和端口号)
import socket
s = socket.socket()
host = '127.0.0.1'
port = 1234
# bind 分配地址信息
s.bind((host,port))
调用bind
函数给套接字分配地址后,就基本上完成了接电话的所有准备工作。接下来需要连接电话线并等待来电
3. 调用listen
函数(连接电话线)时进行的对话
问
:“已架设完电话机后是否只需要连接电话线”答
:“对,只需连接就能接听电话”
一连接电话线,电话机就转为可接听状态,这时其他人可以拨打电话请求连接到该机。同样,需要把套接字转化为可接收连接的状态。
import socket
s = socket.socket()
host = '127.0.0.1'
port = 1234
s.bind((host,port))
# 等待来电
s.listen(5)
连接好电话线后,如果有人拨打电话就会响铃,拿起话筒后才能接听电话。
4.调用accept
函数(拿起话筒)时进行的对话
问
:“电话铃响了,我该怎么办?”答
:“难道您真不知道,拿起话筒接听啊!”
拿起话筒意味着接收了对方的连接请求。套接字同样如此,如果有人为了完成数据传输而请求连接,就需要调用以下函数进行受理
import socket
s = socket.socket()
# 处理请求
s.accept()
接受连接请求的套接字创建过程可整理如下
- 第一步:调用
socket
函数创建套接字 - 第二步:调用
bind
函数分配IP地址和端口号 - 第三步:调用
listen
函数转为可接收请求状态 - 第四步:调用
accept
函数受理连接请求
python 实现一个简单的服务器端
import socket
s = socket.socket()
host = '127.0.0.1'
port = 1234
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print('connection from', addr)
c.send('hello world'.encode())
c.close()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。