【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 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java 网络编程】UDP 简介
- 下一篇: 【Java 网络编程】UDP 服务器 客