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