0
我试图找到两个数字的总和。 这些是我的代码为服务器和客户端, 的结果,我要的是客户端收到的:和46 而是我得到 客户端收到的:和12 客户端收到的:和34在这个套接字程序中没有得到答案
客户:
# 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()
服务器:
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()
和美孚包含
12
34
仍然不能保证服务器在一次调用'conn.recv()'的时候会收到所有的数字。即使客户端只调用一次's.sendall()',它仍然可能出现在多个'.recv()'中。 –
@ 101得到这个输出用于编辑:客户接收:总和12,34 接收的客户:总和12,34 – user7576454
@Robᵩ任何修改得到输出只有一次? – user7576454