2016-05-25 5 views
0

Ich schreibe ein TCP-Python-Skript, das als Server fungieren und eine Temperatur lesen von einer Maschine (der Client) abrufen wird. Ich muss einen Befehl vom Server an den Client übergeben und auf eine Ausgabe der Antwort warten. Ich erreiche erfolgreich die cmd-Definitionszeile, aber wenn s.accept() aufgerufen wird, hänge ich ohne Antwort vom Client.TCP Python Socket Server Antwort

Server.py

import socket 
port = 7777 
ip = raw_input('192.168.62.233') 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((ip, port)) 
s.listen(1) 
print "waiting on port: ", port 

while True: 
    cmd = raw_input('KRDG? A[term]')#command send to client 

    conn, addr = s.accept() 

    s.send(cmd) 

    print "It sent" 

    data = conn.recv(4096) 

    print "Received:", data, " from address ", addr 

Edit:

ich Sie richtig sind glauben, sollte ich meinen Code der Client und der Temperaturanzeige auf dem Server in Betracht ziehen. Ich werde jetzt nach "hier 2" hängen bleiben, wenn ich nach s.recv() gehe.

Client.py

import socket 

ip = '192.168.62.233' 
port = 7777    # The same port as used by the server 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((ip, port)) 

print 'here' 
s.send('KRDG? A[term]') 

print 'here 2' 
data = s.recv(4096) 
print 'here 3' 
s.close() 
print 'Received', repr(data) 
+1

Normalerweise ist es umgekehrt: Der Client fragt den Server per Befehl ab. Wo ist der Clientcode? – Daniel

+0

Ich glaube, du bist richtig, ich sollte meinen Code der Client und Temperaturanzeige auf dem Server betrachten. Ich werde jetzt hängen nach "hier 2", wenn ich zu s.recv() gehen, wie in der Bearbeitung gesehen –

+0

@ScottMacdonald So können Sie erfolgreich eine Verbindung zu Ihrem Server bei IP: Port, und senden Sie Daten, aber Sie don Ich bekomme nichts zurück. Hast du den Servercode? Können Sie am Server überprüfen, ob die Client-Daten empfangen werden und was der Server damit macht? – margold

Antwort

0

Normalerweise wird ein TCP-Server akzeptiert blockieren, während es ein Client wartet auf eine Verbindung. Haben Sie überprüft, ob Ihr Client eine Verbindung herstellen kann und verbindet? Sie können ein Tool wie tcpdump o.ä. verwenden, um die Netzwerkaktivität zu überwachen und sicherzustellen, dass der Client eine Verbindung herstellt.