2013-11-21 215 views
0

所以我想關閉一個套接字而不關閉它到另一邊閱讀。套接字關閉關閉錯誤

我關閉代碼是

objClientSocket.Shutdown(SocketShutdown.Both); 
    objClientSocket.Close(120); 

的問題是,在執行該

objClientSocket.Receive(buffer); 

應用程序收到錯誤,連接已被強制關閉。如果我在.Shutdown()之前放置一個斷點並讓接收端的應用程序運行,那就沒問題。我認爲.Shutdown()方法等待套接字在關閉之前被讀取和清空?我錯了嗎?

在此之後我拿出.Shutdown()和.Close()會導致同樣的錯誤。(不奇怪,但以爲我把它弄出來的方式。)

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

我想到問題可能下游端已經決定要接收從未真正發送的數據。我已經處理了一些細節,但socket API提供了一些方法(我認爲其中的一個是「Select」),可以用來等待套接字上發生「某些事情」;一旦套接字發生了什麼事情,就可以看到有多少數據可用(如果有),然後處理它。

+0

謝謝我會試一試! –