我有一个基于 TCP 套接字的客户端服务器系统。一切正常,但是当网络从客户端断开并重新连接时,我会自动SocketError.ConnectionReset
发送表单客户端,并且关于此命令,套接字在服务器端关闭。这也很好。
但是当我查看客户端时,它显示套接字仍与服务器连接。(关于socket仍然与服务器连接[不是每次都发生],有时显示断开连接,有时显示连接)
SocketError.ConnectionReset
“服务器从客户端获取但客户端仍然连接”是否有意义 ?
所以我想知道可能的原因是什么SocketError.ConnectionReset
以及如何处理我提到的这类问题?
我再说一遍,在正常环境中一切正常(例如,如果我退出客户端,它会断开与服务器相同的套接字)
提前致谢。
编辑:
这是客户端的代码。实际上,它是一个计时器,它在程序生命周期内每 3 秒滴答一次,并检查 Socket 是否已连接,如果它已断开连接,则它会尝试通过新的套接字实例再次重新连接
private void timerSocket_Tick(object sender, EventArgs e)
{
try
{
if (sck == null || !sck.Connected)
{
ConnectToServer();
}
}
catch (Exception ex)
{
RPLog.WriteDebugLog("Exception occcured at: "+ System.Reflection.MethodBase.GetCurrentMethod().ToString()+"Message: "+ex.Message);
}
}
在正常情况下(没有网络断开/重新连接),如果 TCP 服务器从任何客户端获得 SocketError.ConnectionReset,在客户端我看到客户端套接字已断开连接,它会尝试通过显示的代码再次重新连接。但是当前面解释的情况发生时,服务器得到一个 SocketError.ConnectionReset 但客户端显示它仍然连接。尽管 TCP 服务器显示重置命令是从确切的客户端发送的。