黏包

黏包

  黏包是数据混乱的问题,发送端发送数据,接收端不知道怎么接收

年报的原因

  有一个合包机制(nagle算法),将多次连续发送且间隔较小的数据,进行打包成一块数据传送. 还有一个机制是拆包机制,在发送端,
  因为受到网卡的MTU限制,会将大的超过MTU限制的数据,进行拆分,拆分成多个小的数据,进行传输. 当传输到目标主机的操作
  系统层时,会重新将多个小的数据合并成原本的数据

哪些情况发生黏包:只有tcp才会发生黏包,udp不会。拆包,合包都能造成黏包

import socket
sk = socket.socket()

sk.bind((‘127.0.0.1‘,8888))
sk.listen()

conn,addr = sk.accept()

conn.send(b‘hello‘)
conn.send(b‘world‘)

conn.close()
sk.close()
黏包代码
import socket
sk = socket.socket()

sk.connect_ex((‘127.0.0.1‘,8888))

msg1 = sk.recv(1024)
print(‘msg1:‘,msg1)

msg2 = sk.recv(1024)

print(‘msg2:‘,msg2)

sk.close()
设置接收的size

udp不会发生粘包,udp协议本层对一次收发数据大小的限制是:

      65535 - ip包头(20) - udp包头(8) = 65507

posted @ 2019-06-02 15:02  bin-y  阅读(166)  评论(0)    收藏  举报