2011-10-05 35 views
2

我正在用Java NIO构建一个UDP通信系统,并且浏览了API的javadoc,我注意到这些通道有一个写入原语和一个发送原语。我已经完成了原型并尝试了两者,而且似乎没有任何改变,因为它们都在另一方面提供缓冲区。同样,我看到的书似乎并没有帮助解决这个疑问,所以我想问一下:channel.write和channel.send有什么区别?在NIO频道上写入和发送有什么区别?

在此先感谢。

回答

1

DatagramChannel的。发送的Javadoc()告诉你区别

数据报从字节缓冲区转移仿佛一个普通的写操作。

此方法执行与DatagramSocket类的send方法完全相同的安全检查。也就是说,如果套接字没有连接到特定的远程地址,并且已经安装了安全管理器,那么对于发送的每个数据报,此方法将验证安全管理器的checkConnect方法允许目标地址和端口号。首先通过连接方法连接套接字可避免此安全检查的开销。

+1

...此外,您只能在已连接的DatagramChannel上调用write()。 – EJP

相关问题