【发布时间】:2017-04-10 15:45:55
【问题描述】:
我的项目是通过 SSL 套接字使用子进程 stdin、stdout 的 PIPE 将远程 vim(在我的服务器上)连接到我的客户端。我使用 Python 3.4。 我的套接字(代码中的 cSock)是 SSL 包装的,每次我尝试打开 Vim 时都会遇到同样的错误。这是我的代码:
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)
有什么办法吗?
【问题讨论】:
标签: python-3.x ssl