我正在使用Java NIO构建UDP通信系统,并浏览API的javadoc,我注意到通道具有写原语和发送原语。我有原型并尝试了两者,似乎没有任何改变,因为他们都提供了缓冲区。同样,我看过的书似乎没有帮助清除这个疑问,所以我想问:channel.write和channel.send有什么区别?
提前致谢。
答案 0 :(得分:1)
DatagramChannel的Javadoc。send()告诉你差异
数据报从字节缓冲区传输,就像通过常规写操作一样。
此方法执行与DatagramSocket类的send方法完全相同的安全检查。也就是说,如果套接字未连接到特定的远程地址并且已安装安全管理器,则对于发送的每个数据报,此方法将验证安全管理器的checkConnect方法是否允许目标地址和端口号。首先通过connect方法连接套接字可以避免此安全检查的开销。