安定性を高め、インターフェイスをすっきりさせるために、生のTCPソケットを使用するPythonコードをZeroMQに移植しています。
すぐに、生のバイトの単一パケットが期待どおりに送信されないことがわかります。
rawソケットの場合:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.send('\x00\x01\x02 and some more raw bytes')
これは現在機能しているコードです。これは、ZeroMQを使用した同じコードです。
import zmq
context = zmq.Context()
sock = context.socket(zmq.REQ) # this connection utilizes REQ/REP
sock.connect('tcp://{0}:{1}'.format(HOST, PORT))
sock.send('\x00\x01\x02 and some more raw bytes')
しかし、私がネットを通過するパケットを検査するとき、それらは間違いなく私が期待しているものではありません。ここで何が欠けていますか?
また、ダミーサーバーを使用してループバックインターフェイス()でこのコードをテストする127.0.0.1
と、問題なく動作するようです。
重要な場合はPython2.7を使用します(Unicodeなど)。