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指令。