@Test
public void send() throws IOException {
DatagramChannel dc = DatagramChannel.open();
//设置非阻塞
dc.configureBlocking(false);
Scanner scanner = new Scanner(System.in);
ByteBuffer buffer = ByteBuffer.allocate(1024);
// while (scanner.hasNext()) {
// String next = scanner.next();
//
// buffer.put((new Date().toString() + ":\n" + next).getBytes());
// buffer.flip();
// dc.send(buffer, new InetSocketAddress("127.0.0.1", 9898));
// buffer.clear();
//
// }
buffer.put((new Date().toString() + ":\n" + "zzzz").getBytes());
buffer.flip();
dc.send(buffer, new InetSocketAddress("127.0.0.1", 9898));
dc.close();
}
@Test
public void receive() throws IOException {
DatagramChannel dc = DatagramChannel.open();
dc.configureBlocking(false);
dc.bind(new InetSocketAddress(9898));
Selector selector = Selector.open();
dc.register(selector, SelectionKey.OP_READ);
while (selector.select() > 0) {
Iterator<SelectionKey> iterator = selector.selectedKeys().iterator();
while (iterator.hasNext()) {
SelectionKey next = iterator.next();
if (next.isReadable()) {
//可读状态,用缓冲区读;
ByteBuffer buffer = ByteBuffer.allocate(1024);
dc.receive(buffer);
buffer.flip();
System.out.println(new String(buffer.array(),0,buffer.limit()));
buffer.clear();
}
}
iterator.remove();
}
}