【问题标题】:Why SSLSocket, subtype of socket, lacking create_connection method?为什么 SSLSocket,套接字的子类型,缺少 create_connection 方法?
【发布时间】:2014-08-27 17:15:30
【问题描述】:

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'

【问题讨论】:

    标签: python sockets ssl python-2.6


    【解决方案1】:

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

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

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

    1当文档说“套接字”时,他们指的是在函数中创建的套接字,即使他们从未套接字是已创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多