首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于Socket通信的有关问题

2012-01-23 
关于Socket通信的问题我用Socket写了一个客户端和服务端,正常情况下是没问题!但是,如果服务端关闭后,客户

关于Socket通信的问题
我用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 的状态,是不是OPEN的,要是就先调Close
[解决办法]
if (ClientSocket != null && ClientSocket.Connected)
{
ClientSocket.Shutdown(SocketShutdown.Both);
System.Threading.Thread.Sleep(10);
ClientSocket.Close();
}

再执行Open()
[解决办法]
Close掉这个Socket,再从新New一个Socket去连接!

热点排行