套接字实际上和固定电话并无太大区别,。电话机能够同时用来拨打或接听,但对套接字而言,拨打和监听是有区别的。
形容 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()