私はPythonプログラムを初めて使用しています。そして、私は2つの数字を追加するためのクライアント/サーバプログラムを書いた。クライアントは2つの数値を与え、サーバーは合計します。実行中に、クライアント側で上記のエラーが発生しています。文字列またはバッファではありませんint内のエラー
Client.py
!/usr/bin/python
import socket
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.0.1', 58817)
sock.connect(server_address)
a=raw_input("Enter a number: ")
b=raw_input("Enter a number: ")
sock.sendall(a,b)
data = sock.recv(1024)
print data
sock.close()
Server.py
!/usr/bin/python
import socket
import sys
def sum(a, b):
data=a + b
return data
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.01', 58817)
sock.bind(server_address)
sock.listen(1)
connection, client_address = sock.accept()
print ("connection from", client_address)
while True:
data=connection.recv(1024)
if not data: break
print "server received : ", repr(data)
sum(data)
connection.sendall(data)
connection.close()
プログラムを実行している間、私はクライアント側で以下のエラーで打っていますがあり
Enter a number: 4
Enter a number: 3
Traceback (most recent call last):
File "clientadd.py", line 15, in <module>
sock.sendall(a,b)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
TypeError: an integer is required
cliといくつかの間違いですint側にint(a、b)を代入します。それをどのように変更して、サーバーによって読んだら何らかの順序で入れていますか?誰かが私にこれを助けることができますか?プログラムが良好であり、出力を得るための作業状態であるかどうかを確認することができますか?
ありがとうございます!
sock.sendall(a、b)...これが問題です。ネットワーク経由でバイト以外のデータ型を送信することはできません。 –
これを解決するには?言い換えればどんなヒント?私はサーバーに2つのデータを渡し、追加として1つ戻る必要があります。 sendall(a、b)を別の方法で渡す方法はどうでしょうか? – rob