Python套接字传输注意事项,网络收发缓冲区作用,TCP粘包产生原因及处理方法

Python套接字传输注意事项,网络收发缓冲区作用,TCP粘包产生原因及处理方法

套接字传输注意事项

1.监听套接字存在客户端即可发起连接,但是最终连接的处理需要accept进行处理

2.如果连接的另外一段退出,则recv会立即返回空子串不再阻塞

3.当连接的另一端退出时,再试图send发送就会产生BrokenPipeError错误

网络收发缓冲区

缓冲区作用:协调收发(处理)速度,减少交互次数

send和recv实际上是和缓冲区进行交互,发送缓冲区满时就无法发送,接收缓冲区满时recv才阻塞

TCP粘包

产生原因

TCP套接字以字节流方式传输,没有消息边界

发送和接收并不能保证每次发送都及时地被接收

影响

如果每次发送内容表达一个独立的含义,此时可能需要处理粘包防止产生歧义

处理方法

1.每次发送的消息添加结尾标志(人为增加消息边界)

2.发送数据结构体

3.协调收发速度,每次发送后都预留接收时间


最后编辑于:2019/10/15作者: 牛逼PHP

发表评论