とりあえずコードを貼ります
python
1import zmq 2 3#サーバー側 4 5host="127.0.0.1" 6port=6789 7 8context=zmq.Context() 9server=context.socket(zmq.REP) 10server.bind("tcp://%s:%s"%(host,port)) 11 12x=server.recv().decode("utf-8") 13print(100-(x)) 14 15y=50 16server.send(y.encode("utf-8"))
python
1import zmq 2 3#クライアント側 4 5host="127.0.0.1" 6port=6789 7 8context=zmq.Context() 9client=context.socket(zmq.REQ) 10client.connect("tcp://%s:%s"%(host,port)) 11 12y=90 13client.send(y.encode("utf-8")) 14 15x=client.recv().decode("utf-8") 16print(100-(x))
サーバー側から50の数値を送り
クライアント側から90の数値を送るプログラムです
これを実行すると
'int' object has no attribute 'encode'
というエラーが出ます
int型がエンコードに対応していないというエラーである為?ですね
かと言って
y=90
client.send(y)
このようにエンコードの引数?を与えないと今度は
90 does not provide a buffer interface.
というエラーが出ます
文法の理解度が足りてないのでわかりませんが、引数には必ずエンコード指定が必要という事なのでしょうか
下のように一度str変換して、受け取る側でint変換すれば可能でした
python
1import zmq 2 3#サーバー側 4 5host="127.0.0.1" 6port=6789 7 8context=zmq.Context() 9server=context.socket(zmq.REP) 10server.bind("tcp://%s:%s"%(host,port)) 11 12x=server.recv().decode("utf-8") 13print(100-int(x)) 14 15y=50 16server.send(str(y).encode("utf-8"))
python
1import zmq 2 3#クライアント側 4 5host="127.0.0.1" 6port=6789 7 8context=zmq.Context() 9client=context.socket(zmq.REQ) 10client.connect("tcp://%s:%s"%(host,port)) 11 12y=90 13client.send(str(y).encode("utf-8")) 14 15x=client.recv().decode("utf-8") 16print(100-int(x))
しかしこのやり方だと後々困りそうなので、わざわざ変換する事無くint型を送信する方法ってないのでしょうか?
初歩的な質問かもしれませんがわかるかたいらしたらお願いします

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/26 12:45