本节讲解的是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));