DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

客户端socket连接的106号错误分析


Python的socket模块提供了基于socket的网络连接方法,分为server端和client端,在python2.6中,使用server需依次调用下面的方法:

socket(), bind(), listen(), accept(),其中socket方法是构造函数,可多次调用accept()方法与多个client通信。使用client依次调用 socket()和connect()方法即可。

如果一个client已经用connect()或者connect_ex()方法连接了,在没有close()的情况下再次 connect()或者connect_ex(),则会出现106号错误: Python: Socket Error 106: 'Transport endpoint is already connected',connect()方法抛出106号异常,而connect_ex()方法返回值为106(连接成功的返回值为0),解决方法是每次连接时创建一个新的socket,或者先调用close()关闭后再连接。

用connect_ex((host, port))探测端口是否绑定不是很可靠,除了上述106错误外,还有111,即连接被拒绝,建议使用"nc -z host port"代替,不过需要操作系统有netcat,支持nc指令。



Published

Nov 18, 2010

Last Updated

Nov 18, 2010

Category

Tech

Tags

  • Python 136
  • Socket 4
  • 异常 3

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor