当我在python中导入socket时,为什么它会跳过socket.bind?

bbe*_*erg 2 python sockets

我认为除了bind之外的每个方法都在那里.我键入:

import socket
socket.bind
Run Code Online (Sandbox Code Playgroud)

在python命令提示符下,获取"AttributeError:'module'对象没有属性'bind'".

如果我做:

from socket import bind
Run Code Online (Sandbox Code Playgroud)

我得到"ImportError:无法导入名称绑定"

否则,dir(套接字)返回297,其他一切似乎都正常.就像我有socket.socket,socket.setsockopt等.只是绑定不存在.

我在Mint 16运行python 2.7.5+.在python 3.3.2+中也是如此,在同一台机器上的ubuntu 12.04 vm上的Python 2.7.3中也是如此.

知道发生了什么事吗?

mhl*_*ter 5

bind是一个socket 对象的方法,而不是模块

以下是bind创建socket对象后使用where的示例:

取自socket上的 docs

# 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()
Run Code Online (Sandbox Code Playgroud)