为什么SSLSocket,socket的子类型缺少create_connection方法?

时间:2014-07-07 09:10:52

标签: python sockets ssl python-2.6

Python documentation声明:

  

ssl.wrap_socket(sock,keyfile = None,certfile = None,server_side = False,cert_reqs = CERT_NONE,ssl_version = {see docs},ca_certs = None,do_handshake_on_connect = True,suppress_ragged_eofs = True)   获取socket.socket的实例sock,并返回ssl.SSLSocket的实例,这是socket.socket的子类型,它将底层套接字包装在SSL上下文中。

但是当我尝试使用SSL套接字的create_connection方法时,我会收到:

ssl_sock.create_connection(('www.google.com', 443))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'SSLSocket' object has no attribute 'create_connection'

1 个答案:

答案 0 :(得分:1)

create_connection()socket模块中的一个函数,它创建一个新套接字,连接它,然后返回它 1 。套接字对象上的方法是connect(),它接受​​与create_connection()相同的地址元组:

ssl_socket.connect(("...", 443))

不幸的是,在socket模块的文档中,很容易混淆它们。您需要检查您所在页面的哪个部分。套接字对象的方法只能在Socket Objects部分找到,方法的前缀是“socket.”,意思是“socket.socket类型的方法”,结果证明是与模块中其他函数的“socket.”前缀相同,它表示“socket模块的函数”。

1 当文档说“套接字”时,它们表示在函数中创建的套接字,即使它们套接字是创建