隨想錄(udp經驗總結)
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
最新在實現udp方面的軟體,有一些經驗需要總結一下,以供日後參考。
1、udp協議簡單,共8個byte,分別是源埠、目的埠、長度、校驗和。
2、udp沒有超時重傳、擁塞控制,所以單次傳輸的最大長度就是1個short字長。
3、udp可以繫結固定源埠,這是tcp沒有辦法做到的。
4、單次udp收到的報文就是你能處理的單次最大報文,不能像tcp一樣迴圈接收。發包也是一樣。
5、udp沒有辦法確認接收方是不是真的收到報文,如果需要自己新增ack機制。
6、udp傳送的報文如果超過65536,必須分開發送,接收順序不保證,可以自己實現序列號。
7、udp傳送超過1480的報文,也會被ip自動分包。
8、udp比較適合視訊、音訊這種大資料量傳輸,即使丟失部分資料也可以接受。
9、udp比較適合一問一答模式,比如所有命令都是client發起,server只要及時處理就可以了。
注意:
學習udp最好的方式就是用python來學習,比如像這樣,
ubuntu$ python Python 2.7.13 (default, Dec 18 2016, 07:03:34) [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) >>> local=('0.0.0.0',10000) >>> s.bind(local) >>> remote=('0.0.0.0',20000) >>> buffer='0123456789' >>> s.sendto(buffer,remote) 10 >>> s.close() >>>