我有一個客戶端和一個服務器應用程序,客戶端發送一個數據字節,表示用戶已關閉客戶端窗口並終止客戶端程序。問題在於服務器可能會在丟棄他之前向該客戶端發送最後一個通知。如果服務器在阻塞模式下使用SocketChannel的寫入方法,它會無限期地阻塞還是被忽略?在斷開連接之前,我應該讓客戶端等待「斷開連接確認」嗎?發送數據到客戶端通過SocketChannel關閉他的
0
A
回答
1
它不會永遠阻止,也不會被忽略。如果數據在套接字發送緩衝區中有空間,它完全不會阻塞。如果它阻塞了,它可能會產生一個IOException:'通過對等方重置連接',或者它可能只是解鎖並正常返回。沒有預測到這一點。情況不正確,不應該被允許發生。你可以通過關閉兩個插座輸出然後閱讀,直到你得到一個EOS;那麼雙方都處於同一點並可能關閉。
1
對您的上一個問題「是」。您應該設計並實施告別協議,其中包括客戶端不會發送或讀取任何更多應用級數據的狀態,但仍在等待最後確認。
相關問題
- 1. 從客戶端發送文件到客戶端通過HTTP
- 2. 通過節點發送數據到客戶端頁面
- 3. 通過http post發送數據從客戶端到服務器
- 4. 發送數據到客戶端
- 5. 發送數據到Node.js客戶端
- 6. 發送數據到多個客戶端
- 7. Winsock + C +客戶端到客戶端+發送和接收數據
- 8. 通過javascript發送JSON數據從客戶端到服務器通過javascript
- 9. 接收客戶端通過互聯網發送的數據報
- 10. 通過Axis RPC客戶端發送CDATA
- 11. 發送通知客戶端
- 12. Android通過WiFi向Java客戶端發送UDP數據包
- 13. WCF。通過服務和客戶端發送數據
- 14. Netty - 通道寫入無法將數據發送到客戶端
- 15. 如何通過SignalR將遙測數據推送到客戶端?
- 16. 通過客戶端從服務器發送到服務器的敏感數據
- 17. 當發送到客戶端
- 18. Restlet POST通過JSON發送到客戶端資源的表單
- 19. 通過Socket.IO 1.0 SocketId發送到特定的客戶端
- 20. WCF客戶端 - 客戶端何時關閉通道
- 21. Java RMI - 將客戶端存根發送給其他客戶端
- 22. nodejs不向客戶端發送數據
- 23. node.js發送數據給客戶端?
- 24. Erlang:客戶端IP地址,發送數據包到特定的客戶端?
- 25. Python3基於WebSocket的服務器,客戶端關閉發送上
- 26. 如何通過http將數據從服務器發送到客戶端?
- 27. 無法通過websocket將數據從服務器發送到客戶端
- 28. 節點socket.io客戶端偵聽發送到其他客戶端的事件
- 29. 當一個客戶端連接到Socket.io,Node js時,如何將數據發送到某個其他客戶端?
- 30. 通過c發送預約邀請到lotus notes 8.5客戶端#