構造方法 | 說明 |
---|---|
DatagramPacket(byte[] buf,int length) | 構造 DatagramPacket,用來接收長度為 length 的封包。 |
DatagramPacket(byte[] buf,int offset, int length) |
構造 DatagramPacket,用來接收長度為 length 的包,在緩 衝區中指定了偏移量。 |
DatagramPacket(byte[] buf,int length, InetAddress address,int port) |
構造 DatagramPacket,用來將長度為 length 的包傳送到指 定主機上的指定埠。 |
DatagramPacket(byte[] buf,int length, SocketAddress address) |
構造資料包包,用來將長度為 length 的包傳送到指定主機上 的指定埠。 |
DatagramPacket(byte[] buf,int offset, int length,InetAddress address,int port) |
構造 DatagramPacket,用來將長度為 length 偏移量為 offset 的包傳送到指定主機上的指定埠。 |
DatagramPacket(byte[] buf,int offset, int length,SocketAddress address) |
構造資料包包,用來將長度為 length、偏移量為 offset 的包發 送到指定主機上的指定埠。 |
方法 | 說明 |
---|---|
InetAddress getAddress() |
返回某台機器的 IP 地址,此資料包將要發往該機器或者 從該機器接收。 |
byte[] getData() | 返回資料緩衝區。 |
int getLength() | 返回將要傳送或者接收的資料的長度。 |
int getOffset() | 返回將要傳送或者接收的資料的偏移量。 |
int getPort() |
返回某台遠端主機的埠號,此資料包將要發往該主機或 者從該主機接收。 |
getSocketAddress() |
獲取要將此包傳送或者發出此資料包的遠端主機的 SocketAddress(通常為 IP地址+埠號)。 |
void setAddress(InetAddress addr) | 設定要將此資料包發往的目的機器的IP地址。 |
void setData(byte[] buf) | 為此包設定資料緩衝區。 |
void setData(byte[] buf,int offset, int length) |
為此包設定資料緩衝區。 |
void setLength(int length) | 為此包設定長度。 |
void setPort(int port) | 設定要將此資料包發往的遠端主機的埠號。 |
void setSocketAddress(SocketAddress address) |
設定要將此資料包發往的遠端主機的 SocketAddress(通常為 IP地址+埠號)。 |
構造方法 | 說明 |
---|---|
DatagramSocket() | 構造資料包包通訊端並將其系結到本地主機上任何可用的埠。 |
DatagramSocket(int port) | 建立資料包包通訊端並將其系結到本地主機上的指定埠。 |
DatagramSocket(int portJnetAddress addr) | 建立資料包包通訊端,將其系結到指定的本地地址。 |
DatagramSocket(SocketAddress bindaddr) | 建立資料包包通訊端,將其系結到指定的本地通訊端地址。 |
方法 | 說明 |
---|---|
void bind(SocketAddress addr) | 將此 DatagramSocket 係結到特定的地址和埠。 |
void close() | 關閉此資料包包通訊端。 |
void connect(InetAddress address,int port) | 將通訊端連線到此通訊端的遠端地址。 |
void connect(SocketAddress addr) | 將此套接子連線到遠端套接子地址(IP地址+埠號)。 |
void disconnect() | 斷開通訊端的連線。 |
InetAddress getInetAddress() | 返回此通訊端連線的地址。 |
InetAddress getLocalAddress() | 獲取通訊端系結的本地地址。 |
int getLocalPort() | 返回此通訊端系結的本地主機上的埠號。 |
int getPort() | 返回此通訊端的埠。 |
public static void main(String[] args) { DatagramSocket ds=null; DatagramPacket dpSend=null; InetAddress ia=InetAddress.getByName("127.0.0.1"); int port=3021; }
try { ds=new DatagramSocket(); for(int i=0;i<5;i++) { byte[] data=("我是 UDP 用戶端"+i).getBytes(); dpSend=new DatagramPacket(data,data.length,ia,port); ds.send(dpSend); Thread.sleep(1000); } ds.close(); } catch(IOException | InterruptedException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); }
public static void main(String[] args) { DatagramSocket ds=null; DatagramPacket dpReceive=null; int port=3021; }
try { ds=new DatagramSocket(port); System.out.println("UDP伺服器已啟動。。。"); byte[] b=new byte[1024]; while(ds.isClosed()==false) { dpReceive=new DatagramPacket(b, b.length); try { ds.receive(dpReceive); byte[] Data=dpReceive.getData(); int len=Data.length; System.out.println("UDP用戶端傳送的內容是:" + new String(Data, 0, len).trim()); System.out.println("UDP用戶端IP:" + dpReceive.getAddress()); System.out.println("UDP用戶端埠:" + dpReceive.getPort()); } catch(IOException e) { e.printStackTrace(); } } } catch(SocketException e1) { // TODO 自動生成的 catch 塊 e1.printStackTrace(); } }
UDP伺服器已啟動。。。
UDP用戶端傳送的內容是:我是UDP用戶端0 UDP用戶端IP:/127.0.0.1 UDP用戶端埠:53472 UDP用戶端傳送的內容是:我是UDP用戶端1 UDP用戶端IP:/127.0.0.1 UDP用戶端埠:53472 UDP用戶端傳送的內容是:我是UDP用戶端2 UDP用戶端IP:/127.0.0.1 UDP用戶端埠:53472 UDP用戶端傳送的內容是:我是UDP用戶端3 UDP用戶端IP:/127.0.0.1 UDP用戶端埠:53472 UDP用戶端傳送的內容是:我是UDP用戶端4 UDP用戶端IP:/127.0.0.1 UDP用戶端埠:53472