【发布时间】:2013-06-08 12:09:38
【问题描述】:
我面临以下问题:
我有一个客户端(最终是 n 个客户端)并且喜欢连接到服务器。客户端知道服务器/主机地址,但服务器不知道客户端的地址。我希望能够在客户端-服务器之间完成以下消息传递模式(客户端和服务器都需要能够完成以下消息模式):
- 发布消息(预期没有回复)
- 接收消息(预期没有回复)
- 请求/接收消息(预期回复)
- 流式消息(这可能是多余的,因为它可以通过上面的发布消息模式提供)
同样重要的一点,我苦苦挣扎的地方是如何连接到主机,同时仍然能够发送和接收消息。主机没有连接客户端的能力,它只能接受客户端的连接请求。请注意,我不会寻找客户端和服务器都连接的代理/代理解决方案,否则我可以直接使用 rabbitmq 等解决方案。
我怎样才能最好地做到这一点,参考代码示例会更好。
非常感谢。
【问题讨论】:
-
你显然没有阅读 ZeroMq 指南;这些基本问题仅在第一部分就通过代码示例得到了解答,阅读它,它会让您感到惊讶:zguide.zeromq.org/page:all
-
@Raffian,恕我直言,但您可能误读/误解了我的问题。指南的任何第一章都没有回答这个问题。我什至在指南中都没有遇到过回答这个问题的高级模式。我在网上遇到了一些其他人的代码,他们实现了与我在前端和后端、服务器端和客户端在不同任务上以及每个具有两个套接字上寻求的解决方案类似的解决方案。因此,这绝非易事,如果您能查看我的问题和您的否决票,我们将不胜感激。
-
这里是我提到的参考:codebullets.com/a-splendid-new-way-of-tcp-messaging-920。除了单向消息传递之外,它并没有做太多事情,但它完成了双工消息传递。自己判断,请指点我参考的页面,在 zeromq 指南中完成了一些类似的事情。
-
我不相信我误读了您的问题,至少不是第一部分。您想做双向发布/订阅,列表中的前两个项目符号,而服务器不知道客户端的地址(为什么这很重要)?这是第 2 章中说明的动态发现问题bit.ly/118L6G7。只需使用不同的端口为客户端和服务器创建单独的发布/订阅套接字,并使用两个单独的代理进行转发;对请求/回复做同样的事情。我无法解决流媒体问题。除此之外,考虑重新表述您的问题,因为它不是 100% 清楚。
-
我将删除反对票,但除非您编辑问题,否则我不会让我这样做。
标签: c# client messaging zeromq publish-subscribe