我正在使用msdn异步服务器套接字示例。 link
在此服务器上,我从设备获取字符串格式的数据。
问题是在成功获取数据一段时间后我遇到错误并且应用程序挂起: -
套接字异常未处理: 远程主机强行关闭现有连接。
c#debug在这部分代码中显示错误。
listener.BeginAccept(
new AsyncCallback(AcceptCallback),
listener);
如何解决错误。
答案 0 :(得分:0)
据我所知,服务器与客户端建立了连接并开始发送数据。如果这比服务器创建的套接字正确,绑定它并正确启动tcp传输。后续服务器因异常而销毁套接字,连接丢失。
我能想到的是这个问题与邮件大小有关。您可以检查缓冲区大小和超时间隔。
答案 1 :(得分:0)
帮助解决错误: 确认您没有遇到网络问题。 确认远程主机未关闭连接(导致此错误的最常见原因)。 确认您提供足够的待办事项来处理所有用户:
listener.Listen(100);
其中100 =队列中挂起连接的最大长度。
您可以在ReadCallback中捕获远程主机断开连接:
SocketError errorCode;
int bytesRead = handler.EndReceive(ar, out errorCode);
if (errorCode != SocketError.Success)
{
bytesRead = 0;
//handle remote host disconnect...
}
如果这些都签出,那么您的代码中可能还有其他问题。您可能需要发布有关如何创建,启动,停止侦听器以及远程主机如何处理连接的更多详细信息。