服务器限制了只能有一个连接。关闭连接时,使用如下代码都无法释放TCP资源:
try
{
if (this.clientSocket == null) return;
//this.clientSocket.Shutdown(SocketShutdown.Both);
this.clientSocket.Disconnect(false);
//this.clientSocket.Close();
this.clientSocket.Dispose();
}
catch (SocketException sEx)
{
Common.DebugLogger.WLog_Error(sEx.Message);
}
finally
{
this.clientSocket = null;
}
解决方案:
重新创建socket 的上一级类的实例(重启整个程序也可以。。。)
public void DisConnect()
{
this.tcpNet.Disconnect();
this.tcpNet = new TcpNet();// 重新创建socket 的上一级类的实例
}
public class TcpNet : ITcp
{
Socket clientSocket = null;
}