我现在使用Python开发一个聊天服务器。 我在申请pyOpenSSL到聊天服务器和我所规定的试验假人客户的中间。 但每当从虚拟客户发送短信和照片文件到服务器,pyOpenSSL返回驱动我停止使用pyOpenSSL像下面显著错误。
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
send_text_message() : exception : [Errno 1] _ssl.c:1309: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry
你可以让我知道如何解决这个错误? 还有一个更导致虚拟客户死亡的错误。
[client1|chatting1A] socket closed : device_id : client1, client_chatting_id : chatting1A, error : [Errno 10053]
Exception in thread Thread-8:
Traceback (most recent call last):
File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "C:\Python27\lib\threading.py", line 1082, in run
self.function(*self.args, **self.kwargs)
File "D:\temp\uTok1\uTokSocketServer\com\rurusoft\utok\DummyClient.py", line 97, in send_photo_message
sock.write(message)
File "C:\Python27\lib\ssl.py", line 172, in write
return self._sslobj.write(data)
error: [Errno 10054]
如果没有pyOpenSSL,虚拟客户端和服务器工作。 应用pyOpenSSL会导致意想不到的问题:(如果你遇到的问题,或者对问题的解决方案,请让我知道。......如果有到错误没有解决方案,我宁愿找到其他替代品不使用OpenSSL。 。或者你知道它可以加密/解密聊天消息和机器之间转移个人文件的任何alterntives?
虽然在一个局部变量写入(发送)数据之前,发送我已经存储的数据,错误发生每次。
json_encoded = json.dumps(data)
while True:
try:
sock.write(json_encoded)
break
except Exception, e:
Log.print_log(self.LOG_TAG, 'send_text_message() : exception : %s' % (e))
time.sleep(0.05)
解决:作为@大卫·施瓦茨评论,下面的代码解决了上面的问题。
import StringIO ... io = StringIO.StringIO() io.write(json.dumps(data)) buffer = io.getvalue() while True: try: sock.write(buffer) break ...