Ich versuche, die Summe der beiden Zahlen zu finden. Dies sind meine Codes für Server und Client, das Ergebnis, das ich will, ist Client empfangen: Sum 46 sondern ich bekomme Client empfangen: Sum 12 Client empfangen: Sum 34Nicht die Antwort in diesem Socket-Programm
Auftraggeber:
# Echo client program
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))
# s.sendall('Hello, world')
# data = s.recv(1024)
# s.close()
# print 'Received', repr(data)
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()
Server:
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()
und die Foo enthalten
12
34
Es gibt immer noch keine Garantie, dass der Server alle Nummern in einem einzigen Aufruf von 'conn.recv()' empfangen würde. Selbst wenn der Client nur 's.sendall()' einmal aufruft, kann er trotzdem in mehreren '.recv()' s erscheinen. –
@ 101 diese Ausgabe für die Bearbeitung erhalten: KUNDE EMPFANGEN: Summe 12,34 KUNDE EMPFANGEN: Summe 12,34 – user7576454
@ Robᵩ irgendeine Änderung, um die Ausgabe nur einmal zu bekommen? – user7576454