Python 板


LINE

小弟先前寫了幾個小程式, 主要透過 socket 來達成連線和資料的傳輸。 在當時就有遭遇如同標題的問題, 例如說從 server 這一方發送:  conn.sendall('執行 A'.encode('utf-8'))  conn.sendall('執行 B'.encode('utf-8')) 連續發送數個資料時, client 方就很容易接收成:  執行 A執行 B 這樣子期望上要分開卻串在一起情形。 後來的做法是在發送時加上固定的字尾作為辨識, 例如小弟加了 DataEnd, 因此上面的例子中, client 方會接收成:  執行 ADataEnd  執行 BDataEnd 當然偶爾還是會串在一起變成「執行 ADataEnd執行 BDataEnd」, 但因為有辨識用的字尾在裡面, 使用 find 這類函數就可以把接收到的資料切開處理。 這一次的問題則是起於我想要傳送一個較大的資料, 3 分鐘左右的影片、圖片或文件檔都好。 上述的解決辦法雖然能解決串起來的問題, 但當接收的資料較大時, 每次 client 執行 recv 完, 就得跑一次 find, 變得 30 MB 的檔案在 client 端要花上好幾十分鐘才能接收完。 一開始想說會不會是網路的問題, 但把 client 的程式碼大多都拔掉到只剩下接收功能時, 不到一分鐘就能把同樣的檔案接收完成。 因此, 想來這裡向各位前輩請教, 該如何解決這樣的窘境? 目前暫時的解決法是藉由 thread 設置了兩組 server 與 client:  第一組 server 與 client 只負責傳送簡短的資料或命令  第二組 server 與 client 只負責傳送較大檔案的資料 並在第二組 server 每次 sendall 後加入 10 秒的 sleep, 避免與下一個檔案串在一起。 先謝謝各位前輩閱覽此問了。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.30.2.5 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1616747082.A.390.html
1F:→ james732: tcp會幫你合併或分割,一個做法是加上header寫長度 03/26 21:52
2F:推 cuteSquirrel: header裡面放後面payload的長度,當buffer收到足夠 03/27 00:20
3F:→ cuteSquirrel: 長的rawdata,就切割/解碼一次,然後buffer清舊資料 03/27 00:21
4F:→ cuteSquirrel: 再繼續下個循環,如此反覆操作 03/27 00:21
5F:推 cuteSquirrel: 一個小例子: 03/27 00:39
6F:→ cuteSquirrel: server: https://pastebin.com/wRxgBigR 03/27 00:39
7F:→ cuteSquirrel: client: https://pastebin.com/BycG0ZDT 03/27 00:39
8F:推 cuteSquirrel: https://i.imgur.com/px9Io12.png 03/27 00:42
9F:推 cuteSquirrel: 就像一樓說的那樣,關鍵字:tcp sticky packet 03/27 13:43
10F:→ jakeasa123: 謝謝各位提供的資料和關鍵字! 03/28 12:44
11F:推 cuteSquirrel: 不客氣~ 03/29 00:20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP