
代码实现
package udpProgram;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.net.*;
import java.nio.charset.StandardCharsets;
public class UDPDemo1 {
@Test
public void client() throws IOException {
DatagramSocket s1 = new DatagramSocket();
String dp = "good morning!";
InetAddress addr = InetAddress.getByName("localhost");
int port = 8888;
DatagramPacket pa = new DatagramPacket(dp.getBytes(StandardCharsets.UTF_8), 0, dp.getBytes(StandardCharsets.UTF_8).length, addr, port);
s1.send(pa);
s1.close();
}
@Test
public void sever() throws IOException {
DatagramSocket s1 = new DatagramSocket(8888);
byte[] byte1 = new byte[1024];
DatagramPacket packet = new DatagramPacket(byte1, 0, byte1.length);
s1.receive(packet);
System.out.println(new String(packet.getData()));
s1.close();
}
}
循环单向聊天
package udpProgram;
import org.junit.jupiter.api.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
public class UDPChatting {
@Test
public void user1() throws IOException {
DatagramSocket socket1 = new DatagramSocket(6666);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String data = reader.readLine();
DatagramPacket dataPacket = new DatagramPacket(data.getBytes(StandardCharsets.UTF_8), 0, data.getBytes(StandardCharsets.UTF_8).length, new InetSocketAddress("localhost", 8888));
socket1.send(dataPacket);
if (data.equals("bye")) {
break;
}
}
socket1.close();
}
@Test
public void user2() throws IOException {
DatagramSocket socket1 = new DatagramSocket(8888);
while (true) {
byte[] bytes = new byte[1024];
DatagramPacket dataPacket = new DatagramPacket(bytes, 0, bytes.length);
socket1.receive(dataPacket);
String message = new String(dataPacket.getData());
System.out.println(message);
String messTrim = message.trim();
if (messTrim.equals("bye")) {
break;
}
}
socket1.close();
}
}