社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Myath • 4 年前 • 737 次点击  

客户端:

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
 
737 次点击  
文章 [ 1 ]  |  最新文章 4 年前