java.net.DatagramSocket类
UDP协议编程中的套接字,可以用来实现客户端也可以实现服务器端
java.net.DatagramPacket类
此类表示UDP协议通信中所传输的数据报包
注:无论客户端还是服务器都会使用这个俩个类
例如:
public class UDPServerTest {
private DatagramSocket socket;
private DatagramPacket packet;
private byte[] buf;
public UDPServerTest(int port) {
try {
socket = new DatagramSocket(port);
buf = new byte[512];
packet = new DatagramPacket(buf, buf.length);
} catch (SocketException e) {
e.printStackTrace();
}
}
public void start(){
try {
//使用packet接收数据
socket.receive(packet);
//也可以使用字节流从buf中读出数据
System.out.println("服务器接收的数据为:"+new String(buf,0,packet.getLength()));
} catch (IOException e) {
e.printStackTrace();
}finally {
if(socket!=null)socket.close();
}
}
public static void main(String[] args) {
UDPServerTest t = new UDPServerTest(9999);
t.start();
}
}
public class UDPClientTest {
private DatagramSocket socket;
private DatagramPacket packet;
public UDPClientTest() {
try {
socket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
}
public void send(String ip,int port){
try {
byte[] buf = "hello world 中国".getBytes();
//打好数据报包,并指定要发生到的ip和端口
packet = new DatagramPacket(buf, buf.length,InetAddress.getByName(ip), port);
//发送数据
socket.send(packet);
System.out.println("客户端发送数据完毕");
} catch (IOException e) {
e.printStackTrace();
}finally {
if(socket!=null)socket.close();
}
}
public static void main(String[] args) {
UDPClientTest t = new UDPClientTest();
String ip = "127.0.0.1";
int port = 9999;
t.send(ip, port);
}
}