2011-07-01 15 views
1

我有什么:解除绑定套接字连接C#/ Python的

  • 我有C#编写的双插槽的客户端程序。
  • 我有一个套接字服务器程序(不是我写的,但它的工作原理)在Python中。

问题:

第一个C#套接字客户端我所写的作品很好,可以与蟒蛇服务器的客户端通信。我可以发送数据没有问题。但是我想重写代码以使其更加面向对象,所以我做了第二个程序,它与第一个程序完全相同。

的问题是第二个将无法连接,这样说:

System.Net.Sockets.SocketException:试图通过其访问权限来访问一个插座被禁止的方式。

我使用了这个,我已经认识到第一个连接的连接并没有完全解除绑定。

当我做了一个netstat -a,我实际上看到了连接,并在最后说了TIME_WAIT。

问题是,我该如何取消绑定?它在C#/客户端吗?

仅供参考我已经尝试关闭/断开/关闭套接字,并没有工作。我也加入这个命令

connection.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 

在套接字连接的实例化,但也没有工作。

我需要在服务器端做些什么来解除连接吗?

+0

您的客户端程序不应该绑定到特定的端口 - 您确定不会让客户端与服务器混淆吗? –

回答

0

我知道你说过你已经致电关闭或断开连接。

但是你是否重新初始化套接字变量。

如:连接=新System.Net.Sockets.Socket(...

如果您使用的是.NET的是旧版本,你也可以有通话后调用Dispose()关闭()

如:

connection.Close(); 
connection.Dispose(); 
connection = new System.Net.Sockets.Socket(... 

一定要始终与try语句内插座工作的任何电话发送和接收数据或关闭套接字可能会导致它的错误在哪一个阶段,你应该记录错误和呼叫关闭(),然后如果适用,在套接字实例上处理()以清除th电子资源。完成此操作后,可以重新初始化套接字的新实例以尝试与服务器建立新连接。