我正在尝试编写一个异步套接字应用程序,该应用程序在两侧传输复杂的对象..
我在这里使用了这个例子......
一切都很好,直到我尝试发送多包数据。当传输的数据需要多个包传输时,服务器应用程序正在挂起并且服务器失控而没有任何错误...
几个小时后,我找到了解决方案;如果我在每次 EndSend 回调后关闭客户端发送方套接字,则问题正在解决。但我不明白为什么这是必要的?或者对于这种情况还有其他解决方案吗?
我的 (2) 项目与上面的示例相同,只是我更改了 EndSend 回调方法,如下所示:
public void EndSendCallback(IAsyncResult result)
{
Status status = (Status)result.AsyncState;
int size = status.Socket.EndSend(result);
status.Socket.Close(); // <--------------- This line solved the situation
Console.Out.WriteLine("Send data: " + size + " bytes.");
Console.ReadLine();
allDone.Set();
}
谢谢..