2010-10-01 226 views
0

嘿,我想問一個關於c#上的異步套接字通信的問題。除了關閉客戶之外,現在一切都很好。當客戶端關閉它的連接時,服務器不會立即關閉客戶端的工作者套接字。它幾秒鐘後關閉。我該如何解決這個問題?異步客戶端套接字關閉?

回答

2

檢查此鏈接http://msdn.microsoft.com/en-us/library/fx6588te.aspx#2我的問題是,我不能保持連接打開後,我收到來自客戶端的消息。 如果按照該示例所述,連接在收到消息後立即關閉。 如果我沒有關閉連接,我只能收到一條消息,只能收到一條消息。 如果你有任何解決方法,就這樣扔它。

我明白了!

如果有其他人有這個問題,他們應該做以下事情。 更改此代碼:

content = state.sb.ToString() 

這樣:

content = state.sb.ToString().TrimEnd(New Char() {ChrW(13)}) 

那麼你應該改變這樣的:

If content.IndexOf("<EOF>") > -1 Then 

這樣:

If content.IndexOf(New Char() {ChrW(13)}) > -1 Then 

這將接收輸入( chrw(13))as行結束。

然後在這裏:

Console.WriteLine("Read {0} bytes from socket. " + vbLf + " Data : {1}", content.Length, content) 
' Echo the data back to the client. 
Send(handler, content) 

你應該這樣做:

Console.WriteLine("Read {0} bytes from socket. " + vbLf + " Data : {1}", content.Length, mid(content,1,content.length -2)) 
' Echo the data back to the client. 
'Send(handler, content) 
content = String.Empty 
state.sb.Clear() 
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, New AsyncCallback(AddressOf ReadCallback), state) 

和你做。

相關問題