【问题标题】:Sending message with Router-Dealer Proxy using c# and python使用 c# 和 python 使用 Router-Dealer 代理发送消息
【发布时间】:2016-08-18 03:41:47
【问题描述】:

我可以通过使用简单的请求-回复让 c#(客户端)和 python(服务器)相互交谈。但是,我希望基于 c# asp.net 构建的 Web 应用程序稳定且需要更多客户端和服务器,因此我尝试使用 Router-Dealer Proxy 和 python 连接 c# 和 python。

我尝试先运行代理 python 脚本,然后运行 ​​c#(客户端),然后运行 ​​python(服务器)。但是,当我运行 python(服务器)时,它会给我一个“正在使用的地址”错误消息。

是我以错误的顺序运行它们还是代理 python 脚本有问题(如下所示)?

5602 = c# 客户端

5603 = python 服务器

def main():

context = zmq.Context()

# Socket facing clients
frontend = context.socket(zmq.ROUTER)
frontend.bind("tcp://*:5602")

# Socket facing services
backend  = context.socket(zmq.DEALER)
backend.bind("tcp://*:5603")

zmq.proxy(frontend, backend)

# We never get here…
frontend.close()
backend.close()
context.term()

if __name__ == "__main__":
main()

【问题讨论】:

    标签: c# python proxy zeromq netmq


    【解决方案1】:

    我假设您的服务器使用绑定,所以代理应该connect 给他们,而不是也使用bind

    注意:在 zeromq 中,应用程序启动的顺序无关紧要,因此您可以将代理告诉 connect 到一个尚不存在的服务器,当服务器启动时,将建立连接。

    【讨论】:

    • 在代理脚本中将“bind”改为“connect”?你认为在python服务器脚本中使用“bind”会很重要吗?
    • 只更改第二个。所以 Client [connect], Proxy (frontend) [bind], Proxy (backend) [connect], Server [bind] (即匹配连接-绑定对)
    • 当我尝试 backend.connect 时,它会引发“无效参数”错误。语法正确吗?
    • 原来我在使用 backend.connect 时必须“完全”写出 tcp 地址,而不是使用小行星 (*)。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多