import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServer {
public static void main(String[] args) {
//1.建立伺服器端的DatagramSocket資料包,
try {
DatagramSocket datagramSocket=new DatagramSocket(8800);
//2.建立資料報,用于接受使用者傳送過來的資料;存放于位元組數組;
byte[]bytes=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length);
System.out.println("*****伺服器端已經啟動****");
//使用receive方法接受;
datagramSocket.receive(datagramPacket);
//4.讀取資料;
String info=new String(bytes,0,datagramPacket.getLength());
//5.輸出資訊;
System.out.println("伺服器,用戶端資訊為:"+info);
//更新之後,伺服器端響應用戶端;
InetAddress address=datagramPacket.getAddress();
int port=datagramPacket.getPort();
byte[]sinfo="歡迎您".getBytes();
//更新2.建立資料報,包含socket資訊;
DatagramPacket packet=new DatagramPacket(sinfo,sinfo.length,address,port);
// 更新3;
datagramSocket.send(packet);
//關閉資源;
datagramSocket.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5COxkDO5kTMjF2N0MmZhV2YxYzX0QjMyUTMxMzLcJTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
用戶端代碼:
import java.io.IOException;
import java.net.*;
public class UDPClient {
public static void main(String[] args) {
//1.定義伺服器的位址、端口号、資料;
try {
InetAddress address=InetAddress.getByName("localhost");
int port=8800;
byte[]data="使用者名:admin,密碼:123".getBytes();
//2.建立資料報,包含發送的資料資訊,可以使用帶有4個參數的方法;
DatagramPacket datagramPacket=new DatagramPacket(data,data.length,address,port);
//3.建立DatagramSocket對象;
DatagramSocket datagramSocket=new DatagramSocket();
//4.向伺服器發送資料;
datagramSocket.send(datagramPacket);
更新之後代碼段;
byte[]data2=new byte[1024];
DatagramPacket packet2=new DatagramPacket(data2,data2.length);
//2.接受伺服器響應的資料 ;
datagramSocket.receive(packet2);
//3.讀取資料;
String reply=new String(data2,0,packet2.getLength());
System.out.println("我是用戶端,伺服器端說:"+reply);
//4.關閉資源;
datagramSocket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}