6

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

马上,我可以看到一个原始字节包没有按我的预期发送。

在原始套接字中:

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 或其他)。

4

1 回答 1

4

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

当然,ZMQ 无法传输消息,甚至没有成功协商连接。当我在本地测试时,我正在使用虚拟 ZMQ 服务器进行测试,所以它运行良好。

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

无论如何,对于虚惊一场,我们深表歉意。

于 2012-09-27T13:50:07.023 回答