Ich versuche, ein grundlegendes Server- und Klientenskript zu verursachen. Die Idee ist, dass der Client eine Verbindung zum Server herstellen und Befehle ausführen kann. Irgendwie wie SSH, aber sehr einfach. Heres mein Server-Code:Python - Server- und Clientprobleme
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()
Und hier ist mein Kunde:
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()
Hier ist mein Problem. Ich starte den Server und führe den Client dann auf demselben Rechner aus. Ich gebe den Port ein und verbinde mich. Dann bekomme ich den raw_input, der das '$' ist. Wenn ich einen Befehl wie 'ls' eintippe, hängt es nur auf der Client-Seite. Ich muss den Server verlassen, damit der Client die Ausgabe von ls erhält. Nebenbei betreibe ich Ubuntu Linux. Nicht sicher, ob das zählt.
Jetzt habe ich den Code für Sie sowieso geschrieben. Die Antwort wird aktualisiert. Du kannst immer noch tun, was auch immer du mit ssh machen willst, weißt du? –
Bitte erfinden Sie SSH nicht neu. Irgendein armer Kerl wird das unterstützen und aufrechterhalten müssen! – Johnsyweb