本人在寫了一個簡單的檔案傳輸程式,服務端多執行緒傳輸檔案,客戶端多執行緒接收檔案,在本機測驗的時候還沒有問題。但是我在無線局域網中測驗的時候,發送檔案的時候 就丟失掉了很多資訊,當然如果在客戶端recv到資料包的的時候send一個類似于確認幀的東西回去,然后服務端收到確認幀后再send下一個資料包的時候就沒問題了,但是這樣傳輸檔案的時間就長了許多。不太清楚是什么原因,我記得默認的send不是同步的嗎,為什么會發生這樣的問題。
開發環境是Windows10
uj5u.com熱心網友回復:
send只是發送到發送快取里面,并不是真正發送給了對方。uj5u.com熱心網友回復:
有無大佬來解答uj5u.com熱心網友回復:
你覺得會是什么問題呢,是接收端的接收能力太差了嗎
uj5u.com熱心網友回復:
你是TCP還是UDP?uj5u.com熱心網友回復:
tcp的
uj5u.com熱心網友回復:

你沒確認回傳值吧。
send要確定成功發送了多少位元組過去。
recv要確定成功接收了多少位元組過來。
發送實際檔案資料之前,先發送檔案大小過去
uj5u.com熱心網友回復:
意思是我在應用層的協議設計的不太行嗎
uj5u.com熱心網友回復:
確認回傳值就能解決問題了嗎
uj5u.com熱心網友回復:
tcp發送接識訓本思路是每一個發送包里面都包含自己的包頭,包頭里面包含資料長度,資料型別等,接收端每次接收,都是先接收包頭,再根據包頭來接收實際資料長度,要求一一對應
uj5u.com熱心網友回復:
我程式的邏輯有點問題,現在send不會丟包了,只是傳輸的慢而已,我試試看擴大緩沖區會怎么樣uj5u.com熱心網友回復:
接收端的邏輯有點問題,驗證了接收長度后沒有問題了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61560.html
標籤:C++ 語言
上一篇:求助,寫計時小程式
