2011-10-05 34 views
2

我正在用Java NIO構建一個UDP通信系統,並且瀏覽了API的javadoc,我注意到這些通道有一個寫入原語和一個發送原語。我已經完成了原型並嘗試了兩者,而且似乎沒有任何改變,因爲它們都在另一方面提供緩衝區。同樣,我看到的書似乎並沒有幫助解決這個疑問,所以我想問一下:channel.write和channel.send有什麼區別?在NIO頻道上寫入和發送有什麼區別?

在此先感謝。

回答

1

DatagramChannel的。發送的Javadoc()告訴你區別

數據報從字節緩衝區轉移彷彿一個普通的寫操作。

此方法執行與DatagramSocket類的send方法完全相同的安全檢查。也就是說,如果套接字沒有連接到特定的遠程地址,並且已經安裝了安全管理器,那麼對於發送的每個數據報,此方法將驗證安全管理器的checkConnect方法允許目標地址和端口號。首先通過連接方法連接套接字可避免此安全檢查的開銷。

+1

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

相關問題