Traceback (most recent call last): File "D:\AAAnew_life\pythonReviewProject\EncryptedCommunication\serve.py", line 55, in <module> server_cert = ssl.DER_cert_to_PEM_cert(s.getpeercert(True)) File "D:\user\lib\ssl.py", line 1450, in DER_cert_to_PEM_cert f = str(base64.standard_b64encode(der_cert_bytes), 'ASCII', 'strict') File "D:\user\lib\base64.py", line 95, in standard_b64encode return b64encode(s) File "D:\user\lib\base64.py", line 58, in b64encode encoded = binascii.b2a_base64(s, newline=False) TypeError: a bytes-like object is required, not 'NoneType' 进程已结束,退出代码1
时间: 2023-10-23 19:12:49 浏览: 50
这个错误通常是因为在使用getpeercert()方法获取对等端证书时,对等端没有提供证书,导致返回None,而ssl.DER_cert_to_PEM_cert()方法需要一个有效的DER编码的证书作为输入参数,因此无法处理None。
要解决这个问题,可以在调用getpeercert()方法之前,先通过调用shutdown()方法关闭套接字的写入端,这样对等端就会收到FIN消息,知道对话结束,在getpeercert()方法调用之前就不会返回None了。
例如:
```
conn.shutdown(socket.SHUT_WR)
server_cert = ssl.DER_cert_to_PEM_cert(conn.getpeercert(True))
```
这样就可以避免出现上述错误。注意,如果对等端在关闭套接字之前已经发送了所有数据,则可以省略shutdown()方法的调用,直接调用getpeercert()方法即可。
相关问题
Traceback (most recent call last): File "auto_spy_bot2.py", line 29, in <module> main(systype)
这是一个Python程序的错误跟踪信息。其中,"Traceback (most recent call last):" 显示了程序在执行过程中发生了错误。"File "auto_spy_bot2.py", line 29, in <module>"指出了错误发生在哪个文件的第29行。但是,由于引用内容不足,无法确定具体的错误类型和错误信息。建议提供更多的引用内容或者代码片段以便更好地解决问题。
Traceback (most recent call last): File "down_log_v.py", line 105, in <module> monday_function()
根据提供的引用内容,您提供的代码出现了一个Traceback错误。Traceback错误是Python解释器在运行时遇到错误时生成的一种错误消息。它会显示错误发生的位置以及导致错误的原因。
在您提供的代码中,出现了一个名为"down_log_v.py"的文件,该文件的第105行出现了错误。具体的错误信息没有提供,因此无法确定导致错误的原因。
要解决这个问题,您可以尝试以下几个步骤:
1. 检查文件路径和文件名是否正确。确保文件存在并且可以被Python解释器访问。
2. 检查第105行的代码是否正确。可能存在语法错误、变量未定义或其他错误。
3. 检查代码中是否有其他依赖项或引用的文件。确保这些文件也存在并且可以被Python解释器访问。
如果您能提供更多的代码和错误信息,我可以给出更具体的建议和解决方案。