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