Java学习笔记—UDP通信
生活随笔
收集整理的這篇文章主要介紹了
Java学习笔记—UDP通信
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、UDP通信原理
UDP協議(用戶數據報協議 User Datagram Protocol)是一種無連接通信協議, 即在數據傳輸時數據發送端和接收端不建立邏輯鏈接。因此UDP協議是一種 不可靠的網絡協議,它在通信的兩端各建立一個Socket對象,但是這兩個 Socket只是發送和接收數據的對象。它的通信雙方也沒有客戶端和服務端 的概念。二、UDP發送數據步驟
1、創建發送端的Socket對象 2、創建數據,并把數據打包 3、調用對象的方法發送數據 4、關閉發送端三、UDP接收數據步驟
1、創建接收端Socket對象 2、創建數據包 3、接收數據 4、解析數據 5、關閉接收端四、UDP通信案例
//發送端import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /*UDP發送數據:數據來自鍵盤輸入,直到數據輸入是886,發送數據結束*/ public class UDPSendDemo {public static void main(String[] args) throws IOException {//創建發送端DatagramSocket對象//DatagramSocket()構造數據報套接字并將其綁定到本地主機上任何可用的端口DatagramSocket ds = new DatagramSocket();System.out.println("請輸入要發送的數據:");//創建Scanner對象/*Scanner sc = new Scanner(System.in);String line = sc.nextLine();*///自己封裝鍵盤輸入數據//static InputStream in “標準”輸入流。BufferedReader br = new BufferedReader(new InputStreamReader(System.in));/*String line = br.readLine();//錯誤寫法,這樣寫的話String line = br.readLine()只執行了一次,因此到while中判斷的時候一直會判斷第一次輸入的內容,接收端也只能接收到第一句while (line != null) { */String line;while ((line = br.readLine())!= null) {if (line.equals("886")) {break;}//創建數據并打包byte[] bytes = line.getBytes();DatagramPacket dp = new DatagramPacket(bytes, bytes.length,InetAddress.getByName("192.168.1.5"),10801);//發送數據ds.send(dp);}//錄入886之后關閉發送端ds.close();} }//UDP接收端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket;/*UDP接收數據:因為不知道發送端什么時候發送,故采用死循環接收*/ public class UDPReceiveDemo {public static void main(String[] args) throws IOException {//創建接收端對象DatagramSocket ds = new DatagramSocket(10801);//死循環,接收端一直等待接收數據while (true) {//創建數據包byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes, bytes.length);//接收數據ds.receive(dp);//解析數據String str = new String(dp.getData(), 0, dp.getLength());System.out.println("接收到的數據是:" + str);}} } 運行時,先運行接收端,然后在運行發送端。由于上述的案例接收端添加了死循環一直等待發送端發送數據,所以沒有關閉接 收端,所以最后需要我們手動去關閉哦!運行結果: 請輸入要發送的數據: 你好
接收到的數據是:你好
輸入端輸入:
請輸入要發送的數據:
你好
886
發送端關閉
總結
以上是生活随笔為你收集整理的Java学习笔记—UDP通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱奇艺被指双标:花一样的钱苹果用户能看1
- 下一篇: Java学习笔记——函数式接口