1、UDP協議全稱是用戶數據報協議 ,在網絡中它與TCP協議同樣用於處理數據包,是一種無鏈接的協議。html
一、UDP是一個無鏈接協議,傳輸數據以前源端和終端不創建鏈接;java
二、不維護鏈接狀態,包括收發狀態等,所以一臺服務機可同時向多個客戶機傳輸相同的消息;android
三、UDP信息包的標題很短,8個字節,對於TCP的20個字節信息包的額外開銷很小;算法
四、吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制;編程
五、不保證可靠交付;數組
六、UDP是面向報文的。網絡
2、UDP的代碼編程須要用到DatagramSocket類,Java使用DatagramSocket表明UDP協議的Socket,先了解一下如何使用這個類。app
server服務端(接收數據方)建立步驟eclipse
一、生成DatagramSocket對象,參數爲端口號socket
1 |
|
二、byte數組用來接收數據
1 |
|
三、DatagramPackage以包形式裝載byte數組
1 |
|
四、使用DatagramPacket的receive方法接收發送方所發送的數據,是一個阻塞的方法
1 |
|
五、接收到的數據轉變化成可讀字符串
1 |
|
client客戶端(發送數據方)建立步驟
一、生成DatagramSocket對象,參數爲端口號
1 |
|
二、建立一個InetAddress對象,用於肯定server客戶端(數據接收方),參數爲IP地址,如個人IP地址爲192.168.1.103
1 |
|
三、須要發送的數據轉化爲byte數組
1 2 |
|
四、生成一個DatagramPacket對象,包含須要發送的byte數組,byte數組長度,已設置IP地址的serverAddress,和服務端一致的端口號(這裏是8888)
1 |
|
五、發送數據,調用DatagramSocket對象的send方法
1 |
|
3、代碼demo演示
server服務端,能夠直接運行在eclipse便可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
若屢次運行會提示錯誤:Address already in use: Cannot bind,關掉以前開啓的便可。
Android客戶端代碼demo演示,須要注意的是端口號是與服務端一致的,IP地址是服務端的IP地址。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
在AndroidManifest.xml添加權限和註冊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
這樣便可跑起demo作測試了。先運行服務端,再點擊發送4次,服務端的log以下:
參考博客:
http://www.cnblogs.com/lee0oo0/archive/2012/04/04/2431907.html
http://wang09si.blog.163.com/blog/static/170171804201303004343304/
分類: android