两个类
* 消息发送
* @author wcong
* @version 1.0
* @date 2020-09-11 14:55
*/
public class MsgSend implements Runnable {
private DatagramSocket datagramSocket;
private String toHost;
private int toPort;
public MsgSend(int port,String toHost,int toPort) throws SocketException {
datagramSocket = new DatagramSocket(port);
this.toHost = toHost;
this.toPort = toPort;
}
@Override
public void run() {
while (true){
String str = new Scanner(System.in).next();
if("bye".equals(str)){
break;
}
DatagramPacket datagramPacket = new DatagramPacket(str.getBytes(), str.getBytes().length,
new InetSocketAddress(toHost,toPort));
try {
datagramSocket.send(datagramPacket);
} catch (IOException e) {
e.printStackTrace();
}
}
datagramSocket.close();
}
}
public class MsgReceive implements Runnable {
private DatagramSocket datagramSocket;
public MsgReceive(int targetPort) throws SocketException {
datagramSocket = new DatagramSocket(targetPort);
}
@Override
public void run() {
while (true){
byte[] bytes = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);
try {
datagramSocket.receive(datagramPacket);
System.out.println("对方说:" + new String(bytes));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
测试
public class MsgProviderTest {
public static void main(String[] args) throws SocketException {
new Thread(new MsgSend(10001,"127.0.0.1",8001)).start();
new Thread(new MsgReceive(8002)).start();
}
}
public class MsgConsumerTest {
public static void main(String[] args) throws SocketException {
new Thread(new MsgSend(10002,"127.0.0.1",8002)).start();
new Thread(new MsgReceive(8001)).start();
}
}