Py学习  »  Python

Python 3.8 TLSv1.3套接字关闭导致ConnectionResetError或ConnectionAbortedError

Myath • 5 年前 • 819 次点击  

客户端:

data = b'\xff' * 1000000
ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
#context is created by ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
ssock = context.wrap_socket(ssock, server_hostname='xd1337sv')
ssock.connect((SERVERADDR, SERVERPORT))
ssock.sendall(data)
#time.sleep(3)
ssock.close()

如果我只是使用普通的非SSL套接字,那么在服务器接收到确切数量的数据时,一切正常。如果我使用TLS套接字,则行为取决于版本。

如果我在Python 3.6上运行服务器或客户端,因此将使用TLSv1.2,那么就没有问题。 仅当使用TLSv1.3并取决于 data 客户多久 ssocket.close() 行被执行。

如果我把适量的 time.sleep 之前 ssocket.close() 根据数据的大小,我不会出错。否则,服务器将获得 ConnectionResetError [WinError 10054] An existing connection was forcibly closed by the remote host 只接收部分数据,或者抛出 ConnectionAbortedError [WinError 10053] An established connection was aborted by the software in your host machine 没有收到任何数据。

我正在本地计算机上用本地地址测试服务器和客户端 192.168.1.2 .

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51303
 
819 次点击  
文章 [ 1 ]  |  最新文章 5 年前