標籤:
服務端,建立一個DatagramSocket對象,偵聽在某個連接埠,建立一個DatagramPacket對象接受資料。收到用戶端發來的資訊後,有原封不動轉寄到用戶端。
public class DatagramServerTest {public static void main(String[] args) throws IOException {byte[] buf = new byte[1024];DatagramPacket packet = new DatagramPacket(buf, 1024);DatagramSocket server = new DatagramSocket(9000); //偵聽本機9000連接埠UDP資料包server.receive(packet);String str = new String(buf,0,packet.getLength());System.out.println("server get msg -> "+packet.getAddress().getHostName()+":"+str);server.send(new DatagramPacket(buf,packet.getLength(),packet.getAddress(),packet.getPort()));server.close();}}
用戶端,建立一個DatagramSocket對象和一個DatagramPacket對象(包含目的主機的連接埠號碼9000和IP地址),調用send方法,發送資料.然後調用receive接受伺服器的回傳@
import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class DatagramClientTest {public static void main(String[] args) throws IOException {//建立UDP的Socket InetAddress serverAddr = InetAddress.getByName("192.168.0.101");//目的主機IP地址DatagramSocket client = new DatagramSocket();//本地連接埠隨機,直接建立DatagramSocketString str = "hello world, from " + InetAddress.getLocalHost().getHostName();DatagramPacket packet = new DatagramPacket(str.getBytes(), str.length(), serverAddr, 9000);//目的主機連接埠號碼9000client.send(packet);byte[] buf = new byte[1024];DatagramPacket pkt = new DatagramPacket(buf,1024);client.receive(pkt);String str1 = new String(buf,0,pkt.getLength());System.out.println("client get -> "+packet.getAddress().getHostName()+":"+str1);client.close();}}
Java UDP 資料報