异步客户端socket关闭?

时间:2010-10-01 06:54:36

标签: sockets asynchronous client

嘿,我想问一个关于c#上异步套接字通信的问题。除了关闭客户之外,现在一切都运作良好。当客户端关闭其连接时,服务器不会立即关闭客户端的工作器套接字。它关闭了一段时间后。我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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

这将接收Enter(chrw(13))作为行尾。

然后在这里:

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)

你完成了。