黏包

傳輸層: 端口號算法

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’,字節)

 

打印進度條

相關文章
相關標籤/搜索