在Python中通过ZeroMQ发送原始字节

时间:2012-09-27 13:02:11

标签: python sockets tcp zeromq

我正在移植一些使用原始TCP套接字到ZeroMQ的Python代码,以获得更好的稳定性和更清晰的界面。

马上就可以看到,我发送的单个原始字节数据包并没有像我期望的那样发送。

在原始套接字中:

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)上测试此代码时,它似乎工作正常。

使用Python 2.7(如果重要)(unicode或诸如此类)。

1 个答案:

答案 0 :(得分:4)

喔。哇。我忽略了测试中的一个主要缺陷,我正在测试的远程服务器期待原始TCP连接,而不是ZMQ连接。

当然ZMQ无法传输消息,甚至没有成功协商连接。当我在本地测试时,我正在使用虚拟ZMQ服务器进行测试,因此它工作正常。

如果我已经发布了服务器代码,那么就会立即意识到这就是问题所在。

无论如何,抱歉是误报。

相关问题