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

歡迎訪問 生活随笔!

生活随笔

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

java

【Java 网络编程】UDP API 简介 ( DatagramSocket | DatagramPacket )

發布時間:2025/6/17 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java 网络编程】UDP API 简介 ( DatagramSocket | DatagramPacket ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • I DatagramSocket
        • II DatagramSocket 構造方法
        • III DatagramSocket 數據操作
        • IV DatagramPacket
        • V DatagramPacket 構造方法
        • VI DatagramPacket 設置參數
        • VII DatagramPacket 獲取參數
        • VIII DatagramPacket IP 地址 端口號 說明



I DatagramSocket



DatagramSocket 類簡介 : 負責 UDP 數據的發送和接收 , 該類沒有合并到 Socket API 中 , 因為在 Socket 協議中 , 必須要存在服務器端與客戶端 , 在 UDP 中 , DatagramSocket 既是服務器又是客戶端 , 其不需要監聽端口 , 也不需要建立連接 ;



II DatagramSocket 構造方法



DatagramSocket 構造方法 :

  • ① DatagramSocket() : 創建對象 , 不指定監聽的端口與 IP 地址 ; 使用該對象發送 UDP 數據 , 其會自動尋找可用的端口 , 將數據發送出去 ;
  • ② DatagramSocket(int port) : 創建對象 , 該 Socket 會監聽固定端口 ; 注意該端口是用于監聽數據接收的 ; 發送數據使用的不是該端口號 ;
  • ③ DatagramSocket(int port , InetAddress localAddr) : 創建對象 , 該對象監聽固定端口與指定的 IP 地址 ; 如果計算機本地有多個 IP 地址 , 此時就可以指定只監聽某個 IP 地址的端口 ;


III DatagramSocket 數據操作



1. 接收數據方法 : receive( DatagramPacket dp ) : 接收數據 ;

2. 發送數據 : send( DatagramPacket dp ) : 發送數據 ;

3. 設置超時時間 : setSoTimeout ( int timeout ) : 設置超時時間 , 單位毫秒 ;

4. 釋放資源 : close() ;



IV DatagramPacket



DatagramPacket : 用于處理報文 , 其封裝了發送的信息 byte[] 數組 , 目標 IP 地址 , 目標端口號等信息 , 封裝成報文 ; 也可以將報文拆解成 byte[] 數組信息 ; 該類時 UDP 數據的發送和接收的實體 ;



V DatagramPacket 構造方法



DatagramPacket 構造方法 :

  • ① DatagramPacket ( byte[] buffer , int offset , int length , InetAddress addr , int port ) : 其中 offset 和 length 指定了 buffer 數組的可用區間 ; 后面的兩個參數指定目標設設備的 IP 地址與端口號 ; 該 IP 地址和端口僅在發送時有效 ;
  • ② DatagramPacket ( byte[] buffer , int offset , int length , SocketAddress address ) : 前三個參數用于制定要發送的 byte[] 數組信息 , SocketAddress 中封裝了 IP 地址和端口號 ;


VI DatagramPacket 設置參數



DatagramPacket 設置數據 :

  • ① setData ( byte[] buffer , int offset , int length ) , 如果在構造函數中沒有設置數據 , 或者想要替換發送的數據 , 可以調用該方法設置要發送的數據 ;
  • ② setData ( byte[] buffer) : 設置整個 byte[] 數組作為要發送的數據 ;
  • ③ setLength ( int len ) : 設置數據有效區間 ;
  • ④ setAddress ( InetAddress addr ) : 設置接受數據目標的地址 ; 注意這個 IP 地址發送時有效 , 接收時無效 ;
  • ⑤ setPort ( int port ) : 設置接收數據的端口號 ; 注意這個端口號發送時有效 , 接收時無效 ;
  • ⑥ setSocketAddress ( SocketAddress address ) : 設置 IP 地址 + 端口號數據 ;


VII DatagramPacket 獲取參數



DatagramPacket 獲取數據 :

  • ① getData() : 獲取發送或接受的數據 ;
  • ② getOffset() : 獲取 byte[] 數組數據有效數據的開始位置 ;
  • ③ getLength() : 獲取 byte[] 數組數據的有效長度 ;
  • ④ getAddress() : 獲取 IP 地址信息 ;
  • ⑤ getPort() : 獲取端口號信息 ;
  • ⑥ getSocketAddress ( SocketAddress address ) : 獲取 IP 地址 + 端口號數據 ;


VIII DatagramPacket IP 地址 端口號 說明



關于 DatagramPacket 的 IP 地址和端口號說明 : 這個 IP 地址和端口號僅在發送時是有效的 , 接收時是無效的 , 在接收到數據時 , IP 地址和端口號是系統解析完報文后 , 自動設置到 DatagramPacket 對象中的 , 僅用于說明該數據是由哪個設備的 IP 地址和端口號發送的 ;

總結

以上是生活随笔為你收集整理的【Java 网络编程】UDP API 简介 ( DatagramSocket | DatagramPacket )的全部內容,希望文章能夠幫你解決所遇到的問題。

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