本人小白,學習中遇到的問題。當前的環境是局域網下的通訊。客戶端之間在一些簡單的文字,小一點的圖片,使用UDP進行收發都沒問題,但是當資料超過UDP的MTU(最大傳輸單元)。再去掉IP、UDP資料報的首部,可用的就剩1472個位元組。
1472位元組想要傳輸大一點的圖片或者音頻檔案是遠遠不夠的,所以我想到了兩個方法去處理。
1.UDP 發送前獲取將要發送資料的大小,自定義資料包,將每個資料包固定大小,可以計算出需要多少個資料包來完成資料的發送。給每個資料包進行標號,發送時以結構體的形式發送。接收端接收時,根據標號再重新排序。(查資料說UDP分包傳輸并不能保證順序)。
struct MessageType
{
int total; // 資料包總數
int number; // 資料包標號
int size; // 資料總大小
QByteArray data; // 資料 這里我使用的是Qt
};
2.是使用TCP,判斷資料大小,當資料比較小時(UDP可以一次性發送),就還是使用UDP,當資料比較大時,開啟執行緒,UDP發送訊息,(附帶標示),等待接收端反饋。接收端接收到后,開啟執行緒,TCP監聽埠,監聽成功后,發送確認訊息。發送端收到訊息后去連接 接收端,發送資料。當發送完畢后,釋放連接。
現在就是也不知道用什么方法去處理比較好。上述方法肯定存在著或多或少的問題,還希望大佬給指出,說一下哪個方法更好,或者有其他更好的解決辦法,還希望不吝賜教。
uj5u.com熱心網友回復:
現在就是也不知道用什么方法去處理比較好。上述方法肯定存在著或多或少的問題,還希望大佬給指出,說一下哪個方法更好,或者有其他更好的解決辦法,還希望不吝賜教。UP UP UP
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280800.html
標籤:網絡通信
上一篇:關于NS3發包型別
