【发布时间】:2011-01-25 14:23:36
【问题描述】:
我正在处理一个遇到问题的 Python 项目。我问了很多人,但他们似乎无法帮助我:/ 我正在编写一个执行系统命令的小程序。这个想法是一台机器打开服务器,另一台打开客户端并连接到IP /端口。从那里他们可以执行系统命令并获得输出。唯一的问题是,每当我运行服务器时,它都会成功打开,然后当我打开客户端并连接到服务器时,我会得到 shell,但是当我输入命令时,它会一直挂起,直到服务器关闭,然后我会得到命令的输出客户。
服务器.py:
import sys, os, socket
host = ''
port = 50105
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
print("Server started on port: ", port)
s.listen(1)
while (1):
conn, addr = s.accept()
print 'New connection from ', addr
try:
while True:
rc = conn.recv(2)
pipe = os.popen(rc)
rl = pipe.readlines()
fl = conn.makefile('w')
fl.writelines(rl[:-1])
fl.close()
except IOError:
conn.close()
客户端.py:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = input('Port: ')
s.connect((host, port))
while (1):
cmd = raw_input('$ ')
s.send(cmd)
file = s.makefile('r', 0)
sys.stdout.writelines(file.readlines())
sys.stdout.flush()
file.close()
【问题讨论】:
-
我已经尝试了很多,但似乎都没有。
-
在客户端,我会将 makefile 拉出循环并确保刷新发送的内容——我想你可能想在服务器上做类似的事情,确保你在哪里刷新您希望两者进行交流...
-
我对两者都这样做了,但它仍然没有解决任何问题。