Ich versuche, Befehle zu einem Rasberry Pi mit einem Python-basierten Socket-Server zu senden, wo der Server verschiedene Zeichenfolge Befehl, etwas tun und dann warte auf den nächsten Befehl.Python-Socket-Server mit Java-Client - socket.error: [Errno 32] Gebrochene Leitung
Ich habe einen Socket-Server in Python geschrieben auf einem Himbeer-pi läuft:
import socket
HOST = '' # Symbolic name meaning the local host
PORT = 11113 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
s.bind((HOST, PORT))
except socket.error , msg:
print 'Bind failed. Error code: ' + str(msg[0]) + 'Error message: ' + msg[1]
sys.exit()
print 'Socket bind complete'
def listen():
s.listen(1)
print 'Socket now listening'
# Accept the connection
(conn, addr) = s.accept()
print 'Server: got connection from client ' + addr[0] + ':' + str(addr[1])
while 1:
data = conn.recv(1024)
tokens = data.split(' ', 1)
command = tokens[0].strip()
print command
# Send reply
conn.send("Ack")
break
conn.close()
# s.close()
listen()
print "connection closed"
listen()
Java Client:
public class Client {
public static void main(String... args) throws Exception {
int portNum = 11113;
Socket socket;
socket = new Socket("192.168.1.20", portNum);
DataOutputStream dout=new DataOutputStream(socket.getOutputStream());
dout.writeUTF("Hello");
dout.flush();
dout.close();
socket.close();
}
}
Python Server startet ok und wartet auf eine Verbindung, wenn ich den Client ausführen Code der Server gibt die hello
Text gefolgt von einer Menge Leerzeichen und dann
bearbeiten: der Leerraum ist, dass while 1
Schleife ou die ankommenden Daten ansprechen und dann außer Kontrolle geraten, bis sie abstürzt. Ich möchte den Text ausgeben und für weitere Verbindungen auflisten.
edit 2: behoben Python, so dass es nicht abstürzt - ich lasse die Schleife und den Hörprozess neu starten - was funktioniert. Wenn dieses Skript verbessert werden kann, bitte lmk - es sieht nicht so aus, als würde es skalieren.
danke - ich denke, ich habe es funktioniert und veröffentlichte das bearbeitete Skript -, ich werde dies als die Antwort markieren. – bsautner