0
我已經使用C++ CSocket創建了客戶端服務器應用程序。當我連接客戶端到服務器之後,我用普通的X按鈕關閉客戶端,或者用taskmanager結束任務,服務器CSocket接收到OnClose事件。問題是當我禁用運行客戶端的Windows上的Internet連接時,服務器CSocket不會收到OnClose或OnReceive事件!當您在客戶端禁用網絡連接時,CSocket不會收到OnClose或OnReceive
有人可能知道發生了什麼嗎?
更新:我剛剛測試過,看到客戶端也沒有收到OnClose呢!我禁用了客戶端運行的窗口上的Internet連接!
謝謝,我應該在服務器和客戶端上保持活力嗎? – EBAG
取決於你想要保護的東西。 如果啓用服務器端保持活動,以防止連接處於休眠狀態,以防上述客戶端關閉。同樣,這隻在服務器從不寫入套接字的情況下才是必需的。 由於大概您的客戶端正在寫入套接字,並且如果客戶端連接消耗資源,客戶端keepalive可能意義不大,所以通常沒什麼大不了的。 –