我以前做的项目与标准输入子管材连接一个遥远的VIM(我的服务器上),我的客户,通过标准输出SSL套接字。我使用Python 3.4。 我的套接字(代码中的cSock)是SSL封装的,每次我尝试打开Vim时我都有同样的错误。在这里我的代码:的Python 3.4 ssl.SSLEOFError:EOF发生违反协议(_ssl.c:1638)
vimProc = sp.Popen(["rvim", file], bufsize=0, stdin=sp.PIPE, stdout=sp.PIPE)
cSock.settimeout(1)
rec = Reception(cSock, vimProc)
emi = Emission(cSock, vimProc)
rec.start()
emi.start()
rec.join()
emi.join()
在这里,我接待的线程和排放
class Reception(threading.Thread):
def __init__(self, sock, proc):
threading.Thread.__init__(self)
self.sock = sock
self.proc = proc
def run(self):
while self.proc.poll() == None:
try:
self.proc.communicate(self.sock.recv(1))
except socket.timeout:
pass
class Emission(threading.Thread):
def __init__(self, sock, proc):
threading.Thread.__init__(self)
self.sock = sock
self.proc = proc
def run(self):
while self.proc.poll() == None:
try:
outs = self.proc.stdout.read(1)
if outs == "":
print("EOF reached")
else:
self.sock.send(outs)
except socket.timeout:
pass
这里回溯:
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
self.run()
File ".../server/edition.py", line 62, in run
self.sock.send(outs)
File "/usr/lib/python3.4/ssl.py", line 678, in send
v = self._sslobj.write(data)
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1638)
任何解决方案?
嗯,我发现这个问题。 'if buf ==“”:'没有看到EOF字符,但是“如果buf:'工作得很好。 非常感谢您的帮助@Steffen Ullrich! – Xysto