2
我試圖找到兩個數字的總和。這是我的服務器和客戶端的代碼,結果我要的是如何從字符串中提取整數
客戶端收到的:和46
而是我得到
客戶端收到的:和12
客戶端收到的:和34
客戶:
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()
即成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()
富
23
12
收到此錯誤...類型錯誤:爲+ =不支持的操作數類型(S): '詮釋' 和 '海峽' – user7576454
@ user7576454裹調用'的recv()'在呼叫到'int()'。我編輯了包含該答案的答案。對不起,我沒有意識到'recv()'返回的是什麼。你在原始代碼中沒有得到這個錯誤的原因是因爲你馬上打印它而沒有嘗試對它進行數學運算。 – Dan
賓果,它的工作...... !!!但我如何避免多個輸出:客戶端已收到:總和12 已接收客戶端:總和46 我只需要第二個輸出端 – user7576454