需求
多个客户端向数据发送数据包
在服务端打印数据包
Server
public class UDPserver{
public static void main(String[] args){
//1,创建UDP服务端的Socket对象,并监听1025端口
DatagramSocket server= new DatagramSocket(1025);
//2,一直去接收来自客户端的数据包
while(true){
//指定一个大小为一KB的数据包
byte[] buf=new byte[1024];
DatagramPacket packet =new DatagramPacket(buf,buf.length);
//3,UDP服务器接收一个数据包然后将数据包封装成一个DatagramPacket对象packet
server.receive(packet);//receive接一个数据包
//4,从packet中读取接收的数据
//packet.getData()//获取数据包中的字节数据
//packet.getOffset()//获取数据包中的有效数据量的开始偏移位置
//packet.getLength()//获取数据包中的中长度
String info = new String(packet.getData(),packet.getOffset(),packet.getLength());
System.out.println(info);
}
}
}
Client
public class Client01{
public static void main(String[] args){
//1,创建一个UDP客户端,不需要绑定端口
DatagramSocket client=new DatagramSocket();//没有绑定端口,意味着socket属于客户端
//2,设置等待时间,如果在该时间内没有接收到任何服务端来的数据,则客户端断联
client.setSoTimeout(1000);
InetAddress address=InetAddress.getByName("172.162.80.51");
// InetAddress address=InetAddress.getByAddress();//获取主机、ip对象
// InetAddress address=InetAddress.getLocalHost();//获取本地的IP地址对象
//3,客户端去连接服务端:将服务端的数据传进client里
client.connect(address,1025);
Scanner scanner=new Scanner (System.in);
while(true){
System.out.println("<<<");
String info=scanner.nextLine();
if(info.equals("886")){
break;
}
//4,向服务端发送消息,是一个数据包DatagramPacket 对象
byte[] buf=info.getBytes();
DatagramPacket packet= new DatagramPacket(buf,buf.length);
client.send(packet);
}
client.disconnect();
}
}