首页 > 代码库 > Java-NIO(八):DatagramChannel
Java-NIO(八):DatagramChannel
Java NIO中的DatagramChannel是一个能收发UDP包的通道。
操作步骤:
1)打开 DatagramChannel
2)接收/发送数据
同样它也支持NIO的非阻塞模式操作,例如:
1 @Test 2 public void send() throws IOException { 3 DatagramChannel channel = DatagramChannel.open(); 4 channel.configureBlocking(false); 5 6 ByteBuffer byteBuffer = ByteBuffer.allocate(1024); 7 8 Scanner scanner = new Scanner(System.in); 9 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");10 while (scanner.hasNext()) {11 String line = scanner.next();12 byteBuffer.put((format.format(new Date()) + ":" + line).getBytes());13 byteBuffer.flip();14 15 channel.send(byteBuffer, new InetSocketAddress("127.0.0.1", 9899));16 byteBuffer.clear();17 }18 19 channel.close();20 }21 22 @Test23 public void receive() throws IOException {24 DatagramChannel channel = DatagramChannel.open();25 channel.configureBlocking(false);26 channel.bind(new InetSocketAddress(9899));27 28 Selector selector = Selector.open();29 channel.register(selector, SelectionKey.OP_READ);30 31 while (selector.select() > 0) {32 Iterator<SelectionKey> selectionKeys = selector.selectedKeys().iterator();33 while (selectionKeys.hasNext()) {34 SelectionKey selectionKey = selectionKeys.next();35 if (selectionKey.isReadable()) {36 ByteBuffer buffer = ByteBuffer.allocate(1024);37 channel.receive(buffer);38 buffer.flip();39 System.out.println(new String(buffer.array(), 0, buffer.limit()));40 buffer.clear();41 }42 43 selectionKeys.remove();44 }45 }46 47 }
Java-NIO(八):DatagramChannel
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。