0
嘿,我想問一個關於c#上的異步套接字通信的問題。除了關閉客戶之外,現在一切都很好。當客戶端關閉它的連接時,服務器不會立即關閉客戶端的工作者套接字。它幾秒鐘後關閉。我該如何解決這個問題?異步客戶端套接字關閉?
嘿,我想問一個關於c#上的異步套接字通信的問題。除了關閉客戶之外,現在一切都很好。當客戶端關閉它的連接時,服務器不會立即關閉客戶端的工作者套接字。它幾秒鐘後關閉。我該如何解決這個問題?異步客戶端套接字關閉?
檢查此鏈接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)
和你做。