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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UDP

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UDP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UDP

UDP發送數據

  • Java中的UDP通信
    • UDP協議是一種不可靠的網絡協議,它在通信的兩端各建立一個Socket對象,但是這兩個Socket只是發送,接收數據的對象,因此對于基于UDP協議的通信雙方而言,沒有所謂的客戶端和服務器的概念
    • Java提供了DatagramSocket類作為基于UDP協議的Socket

構造方法

方法名說明
DatagramSocket()創建數據報套接字并將其綁定到本機地址上的任何可用端口
DatagramPacket(byte[] buf,int len,InetAddress add,int port)創建數據包,發送長度為len的數據包到指定主機的指定端口

代碼演示

DatagramSocket datagramSocket = new DatagramSocket();String s = "UDP客戶端";byte[] bytes = s.getBytes();InetAddress name = InetAddress.getByName("1270.0.1");int dk = 8888;DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length,name,dk); 方法名說明
void send(DatagramPacket p)發送數據報包
void close()關閉數據報套接字
void receive(DatagramPacket p)從此套接字接受數據報包

代碼演示

DatagramSocket datagramSocket = new DatagramSocket();String s = "UDP客戶端";byte[] bytes = s.getBytes();InetAddress name = InetAddress.getByName("1270.0.1");int dk = 8888;DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length,name,dk);datagramSocket.send(datagramPacket);datagramSocket.close();

void receive(DatagramPacket p) 從此套接字接受數據報包

DatagramSocket datagramSocket = new DatagramSocket(8888);byte[] bytes = new byte[1024];DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);datagramSocket.receive(datagramPacket);byte[] data = datagramPacket.getData();int length = datagramPacket.getLength();datagramSocket.close();

UDP接收數據【應用】

  • 接收數據的步驟

    • 創建接收端的Socket對象(DatagramSocket)
    • 創建一個數據包,用于接收數據
    • 調用DatagramSocket對象的方法接收數據
    • 解析數據包,并把數據在控制臺顯示
    • 關閉接收端
  • 構造方法

    方法名說明
    DatagramPacket(byte[] buf, int len)創建一個DatagramPacket用于接收長度為len的數據包
  • 相關方法

    方法名說明
    byte[] getData()返回數據緩沖區
    int getLength()返回要發送的數據的長度或接收的數據的長度

代碼演示

DatagramSocket datagramSocket = new DatagramSocket(8888);byte[] bytes = new byte[1024];DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);datagramSocket.receive(datagramPacket);byte[] data = datagramPacket.getData();int length = datagramPacket.getLength();datagramSocket.close();

UDP三種通訊方式【理解】

  • 單播

    單播用于兩個主機之間的端對端通信

  • 組播

    組播用于對一組特定的主機進行通信

  • 廣播

    廣播用于一個主機對整個局域網上所有主機上的數據通信

UDP組播實現【理解】

  • 實現步驟

    • 發送端
    • 創建發送端的Socket對象(DatagramSocket)
    • 創建數據,并把數據打包(DatagramPacket)
    • 調用DatagramSocket對象的方法發送數據(在單播中,這里是發給指定IP的電腦但是在組播當中,這里是發給組播地址)
    • 釋放資源
    • 接收端
    • 創建接收端Socket對象(MulticastSocket)
    • 創建一個箱子,用于接收數據
    • 把當前計算機綁定一個組播地址
    • 將數據接收到箱子中
    • 解析數據包,并打印數據
    • 釋放資源

代碼演示發送端

DatagramSocket ds = new DatagramSocket();DatagramPacket dp = new DatagramPacket("UDP組播".getBytes(),"UDP組播".getBytes().length, InetAddress.getByName("224.0.1.0"),8888);ds.send(dp);ds.close();

代碼演示接收端

MulticastSocket ms = new MulticastSocket();DatagramPacket dp = new DatagramPacket(new byte[1024],1024);ms.joinGroup(InetAddress.getByName("224.0.1.0"));ms.receive(dp);byte[] data = dp.getData();int length = dp.getLength();ms.close();

UDP廣播實現

  • 實現步驟

    • 發送端
    • 創建發送端Socket對象(DatagramSocket)
    • 創建存儲數據的箱子,將廣播地址封裝進去
    • 發送數據
    • 釋放資源
    • 接收端
    • 創建接收端的Socket對象(DatagramSocket)
    • 創建一個數據包,用于接收數據
    • 調用DatagramSocket對象的方法接收數據
    • 解析數據包,并把數據在控制臺顯示
    • 關閉接收端

代碼演示發送端

DatagramSocket ds = new DatagramSocket();DatagramPacket dp = new DatagramPacket("廣播UDP".getBytes(),"廣播UDP".getBytes().length,InetAddress.getByName("255.255.255.255"),8888);ds.send(dp);ds.close();

代碼演示接收端

DatagramSocket ds = new DatagramSocket(8888);DatagramPacket dp = new DatagramPacket(new byte[1024],1024);ds.receive(dp);byte[] data = dp.getData();int length = dp.getLength();ds.close();

總結

以上是生活随笔為你收集整理的UDP的全部內容,希望文章能夠幫你解決所遇到的問題。

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