2010-10-01 189 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) 

和你做。

相关问题