用户1:
public class UdpUser01 {
public static void main(String[] args) {
new Thread(new UdpReceiveMsg(3333)).start();
new Thread(new UdpSendMsg(2222,"xiaoming")).start();
}
}
用户2:
public class UdpUser02 {
public static void main(String[] args) {
new Thread(new UdpReceiveMsg(2222)).start();
new Thread(new UdpSendMsg(3333,"xiaohong")).start();
}
}
发送线程:
public class UdpSendMsg implements Runnable{
private int toPort;
private String name;
public UdpSendMsg(int toPort,String name) {
this.toPort = toPort;
this.name = name;
}
@Override
public void run() {
try {
DatagramSocket socket =new DatagramSocket();
Scanner scanner = new Scanner(System.in);
while(true){
String msg =scanner.nextLine();
if(msg.equals("exit")){
System.out.println("连接已断开!");
socket.close();
break;
}
msg=name+": "+msg;
byte[] bytes =msg.getBytes();
DatagramPacket packet =new DatagramPacket(bytes, bytes.length, InetAddress.getLocalHost(),toPort);
socket.send(packet);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
接收线程:
public class UdpReceiveMsg implements Runnable{
private int fromPort;
public UdpReceiveMsg(int fromPort) {
this.fromPort = fromPort;
}
@Override
public void run() {
try {
DatagramSocket socket =new DatagramSocket(fromPort);
byte[] bytes = new byte[1024*8];
DatagramPacket packet =new DatagramPacket(bytes, bytes.length);
while (true){
socket.receive(packet);
int len = packet.getLength();
String msg =new String(bytes,0,len);
System.out.println(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}