This是一個類似的答案,但不是我確切想要的。我想要做以下兩件事:Java:用於查找寫入非阻塞TCP SocketChannel的所有字節是否已發送給接收方的API?
- 我想知道是否所有的字節已經發送到接收器?
- 另外我想知道socket的輸出緩衝區的當前剩餘容量,而不嘗試寫入它?
This是一個類似的答案,但不是我確切想要的。我想要做以下兩件事:Java:用於查找寫入非阻塞TCP SocketChannel的所有字節是否已發送給接收方的API?
以你的編號點依次是:
你無法知道。數據可能會被操作系統和TCP/IP堆棧緩衝,並且沒有方法可以確定它是否實際上已經放置在電線上。即使知道它被放置在電線上也不能保證任何事情,因爲它可能在運輸途中丟失。
對於UDP,您永遠不會知道目標系統是否接收到數據,除非您編寫基於UDP的協議,以便遠程系統確認數據。
對於TCP協議棧將確保您的代碼在數據在傳輸過程中丟失時得到通知,但在您收到確認消息之前可能會等待很多秒。
有沒有更簡單的API,只是爲了檢查(布爾響應)緩衝區是否爲空? – PHcoDer
沒有任何形式的API。 – EJP