将数据连接并发送到SSL套接字时,Python程序不接收响应

时间:2018-12-20 16:37:14

标签: python-3.x ssl

我正在尝试连接到外部服务器上托管的SSL套接字,发送数据,并且服务应该响应,这正是我试图捕获的内容。但是,程序将等待响应,然后超时。

在基本级别上,我正在尝试复制以下openssl连接。我能够发送ping,服务器响应pong,以便我知道一切正常。

openssl s_client -quiet -connect server.server:443

import socket
import ssl

hostname = "server.server"
context = ssl.create_default_context()

with socket.create_connection((hostname, 4433)) as sock:
    sock.settimeout(5)
    with context.wrap_socket(sock, server_hostname=hostname) as ssock:
        print(ssock.version())
        ssock.send(b'ping')
        response = ssock.recv(1024)
        print(response)
    sock.close()
    print("SSL Socket Closed")

1 个答案:

答案 0 :(得分:1)

关于服务器程序,您一无所知。但是我的猜测是服务器将读取一行并且仅在读取该行之后做出响应。尝试使用openssl s_client时,请输入ping,然后按<Enter>键-这将向服务器发送ping,后跟换行符('\ n')。在代码中使用ssock.send(b'ping')时,您将只发送ping到服务器和服务器可能期望的换行符。因此,服务器将挂起,同时仍尝试读取整行(应以\n结尾)。因此,请尝试发送b'ping\n'而不是仅发送b'ping'