2
Ich versuche, die Summe der beiden Zahlen zu finden. Dies sind meine Codes für Server und Client, das Ergebnis, das ich will, istSo extrahieren Sie interger aus einer Zeichenfolge
Client erhalten: Sum 46
sondern ich
Client empfangen: Sum 12
Client empfangen: Sum 34
Auftraggeber:
import socket
def parse_file(fName):
list = []
with open(fName) as f:
for line in 1f:
list.append(line.strip())
return list
HOST = 'localhost' # The remote host
PORT = 50007 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
input_data = parse_file('foo')
for i in input_data:
s.sendall(str(i))
sum = s.recv(1024)
print "CLIENT RECEIVED : Sum ", sum
s.close()
Serve r:
import socket
def compute_sum(line):
result = sum(int(i) for i in line)
return result
HOST = 'localhost' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
print "SERVER RECIEVED : ", repr(data)
compute_sum(data)
conn.sendall(data)
conn.close()
foo
23
12
diesen Fehler ... Typeerror: nicht unterstützte Operandtyp (e) für + =: 'int' und 'str' – user7576454
@ user7576454 Wickeln Sie den Aufruf 'recv()' in einem Aufruf zu 'int()'. Ich habe die Antwort bearbeitet, um das zu berücksichtigen. Tut mir leid, ich wusste nicht, was 'recv()' zurückgab. Der Grund dafür, dass Sie diesen Fehler in Ihrem ursprünglichen Code nicht erhalten haben, ist, dass Sie ihn sofort drucken, ohne zu versuchen, ihn zu berechnen. – Dan
Bingo, es funktioniert ... !!! aber wie vermeide ich mehrere Ausgänge: CLIENT EMPFANGEN: Summe 12 CLIENT EMPFANGEN: Summe 46 ich brauche nur den zweiten Ausgang – user7576454