Python 网络编程 · 拾遗
端口占用
TCP编程
- 传输可靠性
- 传输大小
代码细节
假如:s = socket.socket()
s.listen()
开始监听。
python socket.listen(5)
这个参数backlog=5
,究竟是什么意思?
很多地方都这样解释:“socket.listen(5) # 等待客户端连接并设置最大连接数
”,但是最大连接数为5,认真的吗?
查了之后,网上有这样的解释,我觉得比较合理:
这个参数指定是等待队列的长度。
也就是如果系统可以并发处理100个请求,同时到达106个请求,100个请求直接被处理,5个等待,第106个直接就拒绝。
上万个请求进来,系统不是每次接受5个用户,而是可以让5个用户等待,系统每次接受的用户取决于系统吞吐量。
而且一般应用传5就够了,一万个并发的应用显然也不是一般应用了
还有另一种说法:
s.accept()
被动接受客户端连接,(阻塞式)等待连接的到来,并返回(conn, address)
二元元组。其中conn是一个通信对象,可以用来接收和发送数据;address是连接客户端的地址,address的格式为元组(hostname, port)
?
s.recv(bufsize)
接收数据,数据以bytes类型返回,bufsize指定要接收的最大数据量。
参考: