0
我寫了一個模擬C#http服務器,我有一個問題。當客戶端第一次關閉連接(已收到回覆中的所有數據),我的程序拋出一個異常:C#不能關閉流,直到寫入所有字節
出現InvalidOperationException:不能關閉流,直到所有的字節都 寫入。
我該怎麼辦?這是否意味着服務器套接字也被關閉了?
我寫了一個模擬C#http服務器,我有一個問題。當客戶端第一次關閉連接(已收到回覆中的所有數據),我的程序拋出一個異常:C#不能關閉流,直到寫入所有字節
出現InvalidOperationException:不能關閉流,直到所有的字節都 寫入。
我該怎麼辦?這是否意味着服務器套接字也被關閉了?
服務器是否讀取了整個請求?
通常情況下,關閉連接的一側是一個好習慣,然後讀取直到獲得零字節(這意味着另一側關閉連接),然後釋放套接字。
private void SafeShutdown(Socket s)
{
socket.Shutdown(Send);
var buff = new byte[200];
while(socket.Receive(buff) > 0)
;
socket.Shutdown(Receive);
socket.Close();
}
也許閱讀[其它問題](http://stackoverflow.com/questions/4441370/cannot-close-stream-until-all-bytes-are-written)會給你一些想法。 – mbm