日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

粘包问题,以及在python中如何调用操作系统命令

發布時間:2025/3/15 python 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 粘包问题,以及在python中如何调用操作系统命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.新模塊'subprocess'

復習: 在os模塊中調用系統命令 import os f = os.popen('dir') print(f.read())上面的結果和下面的寫法是一樣的 import subprocess r = subprocess.Popen('ls',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)# subprocess.Popen(cmd,shell=True,subprocess.stdout,subprocess.stderr) # cmd : 代表系統命令 # shell = True 代表這條命令是 系統命令,告訴操作系統,將cmd當成系統命令去執行 # stdout 是執行完系統命令之后,用于保存結果的一個管道 # stderr 是執行完系統命令之后,用于保存錯誤結果的一個管道 stdout = r.stdout.read().decode('gbk') stderr = r.stderr.read().decode('gbk') print('正確的返回結果:',stdout) print('錯誤的返回結果:',stderr) print('錯誤的返回結果:',stderr)

?

二.粘包問題? (只有tcp協議才會發送粘包,udp不會發生)

?

EX:?發送端發送數據,接收端不知道應該如何接收,造成的一種數據混亂的現象

1.合包機制(nagle算法):?將多次連續發送且間隔較小的數據,進行打包數據傳送.?

?

?

?

2.拆包機制:?有一個機制是拆包機制,在發送端,因為受到網卡的MTU限制,將大的超過MTU限制的數據,進行拆分,拆分成多個小的數據,進行傳輸. ?當傳輸到目標主機的操作系統層時,重新將多個小的數據合并成原本的數據

針對 使用udp協議發送數據,一次收發大小究竟多少合適?udp不會發生粘包,udp協議本層對一次收發數據大小的限制是:65535 - ip包頭(20) - udp包頭(8) = 65507站在數據鏈路層,因為網卡的MTU一般被限制在了1500,所以對于數據鏈路層來說,
一次收發數據的大小被限制在
1500 - ip包頭(20) - udp包頭(8) = 1472得到結論:如果sendto(num)num > 65507 報錯1472 < num < 65507 會在數據鏈路層拆包,而udp本身就是不可靠協議,所以一旦拆包之后,造成的多個小數據包在網絡傳輸中,如果丟任何一個,那么此次數據傳輸失敗num < 1472 是比較理想的狀態

?

轉載于:https://www.cnblogs.com/shuai1993/p/9477472.html

總結

以上是生活随笔為你收集整理的粘包问题,以及在python中如何调用操作系统命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。