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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

pythontcp文件传输_python socket实现文件传输(防粘包)

發(fā)布時(shí)間:2023/12/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythontcp文件传输_python socket实现文件传输(防粘包) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.文件傳輸?shù)囊c(diǎn):

采用iterator(迭代器對(duì)象)迭代讀取,提高讀取以及存取效率;

通過(guò)for line in file_handles逐行conn.send();

2.socket粘包問(wèn)題:

[出現(xiàn)原因]:

A.TCP協(xié)議為了提高傳輸效率,發(fā)送方往往需要收集定量的數(shù)據(jù)才會(huì)封裝給底層并發(fā)送,若出現(xiàn)連續(xù)send(data),TCP會(huì)把該數(shù)據(jù)進(jìn)行整合(直到裝滿(mǎn)數(shù)據(jù)緩沖區(qū)),這樣就造成了粘包數(shù)據(jù);

B.接收方接收方的粘包是由于接收用戶(hù)相關(guān)進(jìn)程不及時(shí)接收數(shù)據(jù),從而導(dǎo)致粘包問(wèn)題,這是因?yàn)榻邮辗较劝呀邮盏降臄?shù)據(jù)放在系統(tǒng)接受緩沖區(qū),用戶(hù)進(jìn)程從該緩沖區(qū)取定量的數(shù)據(jù),但若下一包數(shù)據(jù)到達(dá)前,緩沖區(qū)的數(shù)據(jù)沒(méi)有及時(shí)的被用戶(hù)進(jìn)程取走,則下一包數(shù)據(jù)與前一包部分?jǐn)?shù)據(jù)在系統(tǒng)緩沖區(qū),就可能導(dǎo)致用戶(hù)設(shè)定的進(jìn)程緩沖區(qū)從系統(tǒng)緩沖區(qū)取走兩個(gè)包的部分?jǐn)?shù)據(jù),從而導(dǎo)致粘包

[解決辦法]:

A 發(fā)送方在send()之前,先向接收方發(fā)送數(shù)據(jù)總量大小,并通過(guò)雙端確認(rèn),server端發(fā)送數(shù)據(jù)包,然后接收方通過(guò)按數(shù)據(jù)量大小循環(huán)設(shè)立緩沖區(qū)接收數(shù)據(jù);;

B: TCP提供了PUSH(強(qiáng)制數(shù)據(jù)立即傳送)操作,但影響性能;

C. 周全并且高效的處理粘包

3.code

server.py

client

總結(jié)

以上是生活随笔為你收集整理的pythontcp文件传输_python socket实现文件传输(防粘包)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。