我有以下代碼:接近()與關斷()用的recv()
客戶端:
n=recv(sock,buf,1200,NULL);
服務器端:
shutdown(sockk,SD_BOTH);
的問題是,在客戶端recv
返回0,意味着正常關機。我需要它返回-1(我不能更改客戶端,我需要適應我的代碼。)
我該怎麼做才能使它返回-1?
我有以下代碼:接近()與關斷()用的recv()
客戶端:
n=recv(sock,buf,1200,NULL);
服務器端:
shutdown(sockk,SD_BOTH);
的問題是,在客戶端recv
返回0,意味着正常關機。我需要它返回-1(我不能更改客戶端,我需要適應我的代碼。)
我該怎麼做才能使它返回-1?
不要從服務器調用shutdown()或close(),然後可以向客戶端進程發送一些信號。因此,recv()調用將返回-1,並將errno與EINTR一起設置。希望這可以幫助。
但我建議你不應該採用這樣的編碼習慣。 recv()可以返回0,+ ve數字和-1。它很好地處理所有這些情況。
我想通了。 使用SO_LINGER設置我的套接字並導致異常關機,現在它在shutdown()後返回-1。 謝謝
爲什麼它應該返回-1?這是一個優雅的關機。 如果你不想正常關機,不要使用'shutdown()' – Hasturkun 2009-11-08 12:17:46