我用Socket写了一个客户端和服务端,正常情况下是没问题!
但是,如果服务端关闭后,客户端会收到“远程主机强迫关闭了一个现有的链接!”的异常!
我在异常处理中是像这样处理的:
data.ConnectState = cServerState.eConnectState.NoState;
data.ReceiveState = cServerState.eReceiveState.NoState;
data.workSocket.
data.workSocket.Shutdown(SocketShutdown.Both);
data.workSocket.Close();
Socket newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
data.workSocket = newSocket;
//data.workSocket.BeginConnect(IPAddress.Parse(data.ServerIP), data.Port, new AsyncCallback(sendCallback), data);
我有一个数据监听线程,专门用于检测各个Socket的状态,上面已经值链接为没状态了,所以会从连。
但是,从连后,会抛出这样的一个异常:“在一个已有的链接上做了一个链接请求!”
想了好久都不能解决,希望各位帮下小弟!
但是,如果服务端关闭后,客户端会收到“远程主机强迫关闭了一个现有的链接!”的异常!
我在异常处理中是像这样处理的:
data.ConnectState = cServerState.eConnectState.NoState;
data.ReceiveState = cServerState.eReceiveState.NoState;
data.workSocket.
data.workSocket.Shutdown(SocketShutdown.Both);
data.workSocket.Close();
Socket newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
data.workSocket = newSocket;
//data.workSocket.BeginConnect(IPAddress.Parse(data.ServerIP), data.Port, new AsyncCallback(sendCallback), data);
我有一个数据监听线程,专门用于检测各个Socket的状态,上面已经值链接为没状态了,所以会从连。
但是,从连后,会抛出这样的一个异常:“在一个已有的链接上做了一个链接请求!”
想了好久都不能解决,希望各位帮下小弟!
{
ClientSocket.Shutdown(SocketShutdown.Both);
System.Threading.Thread.Sleep(10);
ClientSocket.Close();
}再执行Open()
在VS 2005里Socket是没有Open()方法的!
为什么我新初始化一个Socket赋予后,还会出现在已经链接的请求上做了一个链接请求?
即:客户端这里捕捉到异常后,如果再继续重连?