I'm porting some Python code that uses raw TCP sockets to ZeroMQ for better stability and a cleaner interface.
Right off the bat I can see that a single packet of raw bytes is not sent as I'm expecting.
In raw sockets:
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')
Which is the current working code. This is the same code using 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')
But when I inspect the packets going over the net, they're definitely not what I'm expecting. What am I missing here?
Also, when testing this code on the loopback interface (127.0.0.1
) with a dummy server it seems to work just fine.
Using Python 2.7 if it matters (unicode or whatnot).
Oh. Wow. I overlooked a major flaw in my test, the remote server I was testing on was expecting a raw TCP connection, not a ZMQ connection.
Of course ZMQ wasn't able to transfer the message, it didn't even negotiate the connection successfully. When I tested locally I was testing with a dummy ZMQ server, so it worked fine.
If I'd have posted the server code it would have immediately made sense that that was the problem.
In any case, sorry for the false alarm.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With