成事不说,遂事不谏,既往不咎。 --论语·八佾篇
import org.junit.Test;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
import java.nio.charset.Charset;
/**
* Description:
* Author:Jizaichun Date:2022/5/11 9:03
*/
public class DatagramChannelDemo {
// 发送端
@Test
public void sendDatagram() throws Exception {
// 打开DatagramChannel
DatagramChannel sendChannel = DatagramChannel.open();
InetSocketAddress sendAddress = new InetSocketAddress("127.0.0.1", 9999);
// 发送
while (true) {
ByteBuffer buffer = ByteBuffer.wrap("你好,服务器".getBytes("UTF-8"));
sendChannel.send(buffer, sendAddress);
System.out.println("已经完成了发送");
Thread.sleep(1000);
}
}
// 接收端
@Test
public void receiveDatagram() throws Exception {
// 打开DatagramChannel
DatagramChannel receiveChannel = DatagramChannel.open();
InetSocketAddress receiveAddress = new InetSocketAddress(9999);
// 绑定
receiveChannel.bind(receiveAddress);
// Buffer
ByteBuffer receiveBuffer = ByteBuffer.allocate(1024);
// 接收
while (true) {
receiveBuffer.clear();
SocketAddress socketAddress = receiveChannel.receive(receiveBuffer);
receiveBuffer.flip();
System.out.println(socketAddress.toString());
System.out.println(Charset.forName("UTF-8").decode(receiveBuffer));
}
}
}
运行结果:
发送端:
接收端: