首页 > 代码库 > java的NIO之UDP用法
java的NIO之UDP用法
Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。
服务器端代码
package com.test.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; public class TestUDPServer { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { DatagramChannel channel=DatagramChannel.open(); channel.socket().bind(new InetSocketAddress(9999)); ByteBuffer buf=ByteBuffer.allocate(48); buf.clear(); /*阻塞,等待发来的数据*/ channel.receive(buf); /*设置缓冲区可读*/ buf.flip(); /*循环读出所有字符*/ while(buf.hasRemaining()) { System.out.print((char)buf.get()); } } }客户端代码
package com.test.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; public class TestUDPClient { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { DatagramChannel channel=DatagramChannel.open(); String newData=http://www.mamicode.com/"hello,itbuluoge!"+System.currentTimeMillis();>输出结果
实际上,上述代码功能非常简单,就是服务器监听,客户端发送一个UDP数据包,如果服务器没有监听或者已经关闭,客户端发送也不会抛出异常,因为UDP就是面向非连接的协议。
java的NIO之UDP用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。