私は基本的なサーバーとクライアントスクリプトを作成しようとしています。その考え方は、クライアントがサーバーに接続してコマンドを実行できることです。 SSHのようなものですが、非常にシンプルです。 HERESに私のサーバーコード:Python - サーバーとクライアントの問題
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を再発明しないでください。いくつかの貧しい人は、これをサポートし、維持する必要があります! – Johnsyweb