2
私は2つの数の和を求めようとしています。これらは、サーバとクライアントのための私のコードであり、私が望む結果が受信文字列からintergerを抽出する方法
CLIENTです:合計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()
fooの
23
12
このエラーを取得... TypeError例外を:+ =のためにサポートされていないオペランドのタイプ(S): 'int型' と 'str' は – user7576454
ラップuser7576454 @呼び出しのrecv 'への()'の呼び出しに'int()'に変更します。私はその答えを編集しました。申し訳ありませんが、私は 'recv()'が何を返すのか分かりませんでした。元のコードにそのエラーが表示されなかったのは、数学を試みることなくすぐに印刷していたからです。 – Dan
ビンゴ、その作業... !!!しかし、私は複数の出力を避けるにはどうすればいいですか?クライアント受信:合計12 クライアント受信:合計46 私は2番目の出力だけが必要です – user7576454