【发布时间】:2011-01-16 01:09:17
【问题描述】:
我正在尝试创建一个基本的服务器和客户端脚本。这个想法是客户端可以连接到服务器并执行命令。有点像 SSH,但非常简单。这是我的服务器代码:
import sys, os, socket
host = ''
port = 50103
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', 0)
fl.writelines(rl[:-1])
fl.close()
except IOError:
conn.close()
这是我的客户:
import sys, socket
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())
file.close()
这是我的问题。我启动服务器,然后在同一台机器上运行客户端。我输入端口并连接。然后我得到raw_input,它是'$'。如果我键入像“ls”这样的命令,它只会挂在客户端。我必须退出服务器才能让客户端接收 ls 的输出。顺便说一句,我正在运行 Ubuntu Linux。不确定这是否重要。
【问题讨论】:
-
现在我还是为你写了代码。答案已更新。你仍然可以用 ssh 做任何你想做的事情,你知道的。
-
请不要重新发明 SSH。一些可怜的家伙将不得不支持和维护它!
标签: python connection client