1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
ByteBuffer byteBuffer = ByteBuffer.wrap("hello lizhi".getBytes(StandardCharsets.UTF_8));
// 绑定的端口
int port = 8888;
// 创建一个ServerSocketChannel
final ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
// 用于监听8888端口
serverSocketChannel.socket().bind(new InetSocketAddress(port));
// 设置非阻塞模式
serverSocketChannel.configureBlocking(false);
while (true) {
// 如果是阻塞式的,会一直等待连接
final SocketChannel socketChannel = serverSocketChannel.accept();
if (null == socketChannel) {
System.out.println("不回答");
Thread.sleep(1000);
} else {
System.out.printf("%s已经收到消息\n", socketChannel.socket().getRemoteSocketAddress());
// 指针回到起点
byteBuffer.rewind();
// 向通道内写数据
socketChannel.write(byteBuffer);
socketChannel.close();
}
}
|