我认为除了bind之外的每个方法都在那里。我输入:
import socket
socket.bind
在python命令提示符下,得到“AttributeError:'module'对象没有属性'bind'”。
如果我这样做:
from socket import bind
我得到“ImportError:无法导入名称绑定”
否则,dir(socket)返回297,其他一切似乎都正常。就像我有socket.socket,socket.setsockopt等。只是绑定不存在。
我在Mint 16运行python 2.7.5+。在python 3.3.2+中也是如此,在同一台机器上的ubuntu 12.04 vm上的Python 2.7.3中也是如此。
知道发生了什么事吗?
答案 0 :(得分:5)
bind
是socket
对象的方法,而不是模块
以下是创建bind
对象后使用socket
的示例:
取自socket
上的文档# Echo server program
import socket
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
conn.sendall(data)
conn.close()
答案 1 :(得分:0)
我可能在这里错了,因为我不像你可能那样经常使用socket
模块,但似乎bind
是模块中类socket
的功能socket
。所以要访问它,你必须这样做:
>>> socket.socket.bind
<unbound method _socketobject.bind>
答案 2 :(得分:0)
bind
是socket.socket
的方法,而不是模块中的函数。
s = socket.socket(...)
s.bind()
因此,只有在创建套接字后,才能将其绑定到地址。
参考:Python docs。
希望这有帮助!