黏包

传输层: 端口号算法

Tcp协议:面向链接,数据可靠,传输效率低,面向字节流shell

 

Udp协议:面向无链接,数据不可靠,传输效率高,面向报文网络

 

Tcpudp协议下的socketsocket

 

Tcp长链接的一些问题优化

 

 

缓冲区:  将程序和网络解耦spa

输入缓冲区效率

输出缓冲区打包

 

Import Subprocessudp

    sub_obj = subprocess.Popen(程序

        ‘dir’,

        shell=True,

        stdout=subprocess.PIPE,  #正确结果的存放位置

        stderr=subprocess.PIPE   #错误结果的存放位置

    )

 

两种黏包现象:

1 连续的小包可能会被优化算法给组合到一块儿进行发送

2 第一次若是发送的数据大小2000B接收端一次性接受大小为1024,这就致使剩下的内容会被下一次recv接收到,致使结果错乱

 

方案一:因为双方不知道对方发送数据的长度,致使接收的时候,可能接收不全,或者多接收另一次发送的信息内容,因此在发送真实数据以前,要先发送数据的长度,接收端根据长度来接收后面的真实数据,可是双方有一个交互确认的过程

 

方案二:

Struct模块,

打包:struct.pack(‘i’,长度)

解包:struct.unpack(‘i’,字节)

 

打印进度条

相关文章
相关标签/搜索