【发布时间】:2021-11-04 21:43:08
【问题描述】:
我创建了一个简单的程序,将字符串从我的 PC 上的客户端发送到不同设备上的服务器。 我正在使用下面的代码。
host = '192.168.1.105'
portNumb = 5000
data="hello world"
soc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
context=ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
sslConn=context.wrap_socket(soc)
sslConn.connect((host,portNumb))
sslConn.send(data.encode())
当我检查wireshark日志时,客户端正在发送字符串但立即关闭连接,甚至不等待来自服务器的ACK。而且字符串也没有到达服务器(我检查了日志)。
谁能建议我一个解决方法?有没有像 recv() 这样的东西我错过了,或者我应该和这个或其他东西一起运行服务器程序?
【问题讨论】:
-
“当我检查wireshark日志时,客户端正在发送字符串但立即关闭连接,甚至不等待来自服务器的ACK。” - 请显示实际输出. ACK 很可能在客户端对 FIN 的响应中。对 TCP/TLS 的工作方式可能存在错误的预期:应用程序不等待交付 - 它会将数据发送到 OS 内核,然后由其关心交付。如果您希望客户端等待服务器已读取并可能处理数据,您必须在协议中添加某种应用程序级别的确认。
标签: python ssl tcp wireshark tls1.2