參考資料: UDP Socket 編程html
package socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSocketClient { public static void main(String[] args) throws IOException { //1.定義服務器的地址、端口、數據 InetAddress address= InetAddress.getByName("localhost"); int port = 8800; byte[] data = "Hello".getBytes(); //2建立數據報 DatagramPacket packet = new DatagramPacket(data, data.length, address, port); //3建立DatagramSocket DatagramSocket socket = new DatagramSocket(); //4發送數據 socket.send(packet); System.out.println("Sended"); /* * 接收服務器端相應的信息 */ //1.建立數據報 byte[] respdata = new byte[1024]; DatagramPacket resppacket = new DatagramPacket(respdata, respdata.length); //2.接收服務器響應的數據 socket.receive(resppacket); //3.轉爲字符串 String reply = new String(respdata, 0, resppacket.getLength()); System.out.println("received:" + reply); //關閉資源 socket.close(); } } package socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSocketServer { public static void main(String[] args) throws IOException { // 1建立服務器端,並指定端口 DatagramSocket socket = new DatagramSocket(8800); // 2建立數據報 byte[] data = new byte[1024]; DatagramPacket packet = new DatagramPacket(data, data.length); // 3 接收客戶端發送的數據 System.out.println("wait for client..."); socket.receive(packet);// 此方法在接收到數據以前會一直阻塞 String info = new String(data, 0, packet.getLength()); System.out.println("Server side get:" + info); /* * 向客戶端相應 */ //客戶端地址、端口、數據 InetAddress address = packet.getAddress(); int port = packet.getPort(); byte[] respdata = "Hello,too!".getBytes(); //建立數據報,並綁定相應信息 DatagramPacket resppacket= new DatagramPacket(respdata, respdata.length, address, port); socket.send(resppacket); } }