C# ZMQ发布子程序在失去网络连接时失败
我在一个中型网络上使用ZMQ 2.1进行了一个简单的酒吧预订设置。尽管一些订阅者使用C#绑定,但其他订阅者使用Python绑定,我遇到的问题与这两个订阅者都一样 如果我从运行订户的机器上拔出网络电缆,我会得到一个不可捕获的错误,该错误会立即终止该订户 下面是一个非常简单的Python订户示例(不是实际的生产代码,但足以重现问题): 在C语言中,程序只是无声地终止。在Python中,我至少了解到: 断言失败:rc==0(..\src\zmq_connector.cpp:48) 此应用程序已请求运行时以异常方式终止它。 有关更多信息,请联系应用程序的支持团队 我尝试过非阻塞版本和轮询器版本,但在这两种情况下,这种即时终止问题仍然存在。有什么明显的事情我应该做,但我没有?(也就是说,对其他人来说是显而易见的:)) 编辑: 发现以下内容: 似乎这是一个众所周知的问题 该链接进一步链接到Github,其中2.1.10的更改日志有以下注释:C# ZMQ发布子程序在失去网络连接时失败,c#,python,publish-subscribe,zeromq,C#,Python,Publish Subscribe,Zeromq,我在一个中型网络上使用ZMQ 2.1进行了一个简单的酒吧预订设置。尽管一些订阅者使用C#绑定,但其他订阅者使用Python绑定,我遇到的问题与这两个订阅者都一样 如果我从运行订户的机器上拔出网络电缆,我会得到一个不可捕获的错误,该错误会立即终止该订户 下面是一个非常简单的Python订户示例(不是实际的生产代码,但足以重现问题): 在C语言中,程序只是无声地终止。在Python中,我至少了解到: 断言失败:rc==0(..\src\zmq_connector.cpp:48) 此应用程序已请求运行
- 修复了问题207,zmq_connecter.cpp:48中的断言失败,当 使用了无效的zmq_connect()字符串,或者无法读取主机名 断然的。在这两种情况下,zmq_connect()调用现在都返回-1
import zmq
def main(server_address, port):
context = zmq.Context()
sub_socket = context.socket(zmq.SUB)
sub_socket.connect("tcp://" + server_address + ":" + str(port))
sub_socket.setsockopt(zmq.SUBSCRIBE, "KITH1S2")
while True:
msg = sub_socket.recv()
print msg
if __name__ == "__main__": main("company-intranet", 4000)