日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java学习笔记—UDP通信

發布時間:2023/12/10 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。