Java NIO 学习(五)--DataGramChannel

本文详细介绍了Java NIO中的DatagramChannel,它类似于UDP的DatagramSocket。内容涵盖如何获取通道、接收和发送消息,以及一个完整的发送与接收实例。在非阻塞模式下,接收和发送可能返回立即结果,但UDP协议不保证数据的安全与完整性。
摘要由CSDN通过智能技术生成

本节讲解的是DataGramChannel,类似与java 网络编程的DatagramSocket类;使用UDP进行网络传输,UDP是无连接,面向数据包的协议,对传输的数据不保证安全与完整;

一、获取DataGramChannel

获取DataGramChannel通常是通过open静态方法得到:

DatagramChannel datagramChannel = DatagramChannel.open();

datagramChannel同样有非阻塞模式,可以通过方法configureBlocking设置:

datagramChannel.configureBlocking(true);

二、接收消息

获取到DataGramChannel后,接收消息,需要先做绑定地址操作:

datagramChannel.bind(new InetSocketAddress(1234));

然后通过receive方法接收消息,这个方法返回一个SocketAddress对象,表示发送消息方的地址:

SocketAddress socketAddress = datagramChannel.receive(buffer);

在非阻塞模式下,可能会立即返回null;

三、发送消息

由于UDP下,服务端和客户端通信并不需要建立连接,只需要知道对方地址即可发出消息,但是是否发送成功或者成功被接收到是没有保证的;发送消息通过send方法发出,改方法返回一个int值,表示成功发送的字节数:

int send = channel.send(buffer, new InetSocketAddress("localhost",1234));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值