Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java zeromq向整个网络广播_Java_Broadcast_Zeromq - Fatal编程技术网

Java zeromq向整个网络广播

Java zeromq向整个网络广播,java,broadcast,zeromq,Java,Broadcast,Zeromq,我不熟悉ZeroMQ(通常使用套接字编程),但我正在尝试(用Java)在ZeroMQ中实现对等模型。我想要的是,当一个节点上线时,它会向整个网络广播一条“我在这里,你可以通过这个地址联系我:…”消息 我认为,如果网络上出现两个或更多节点,它们将能够找到彼此,而不必经过已知的端点 有人对我如何做到这一点有什么想法吗?这在ZeroMQ中是可能的吗?你所要求的不能用zmq完成。没有任何机制(没有已知和定义的端点)允许您“知道”发布者何时联机,其消息何时可以订阅 这就是说,使用路由器(需要一个已知的端点

我不熟悉ZeroMQ(通常使用套接字编程),但我正在尝试(用Java)在ZeroMQ中实现对等模型。我想要的是,当一个节点上线时,它会向整个网络广播一条“我在这里,你可以通过这个地址联系我:…”消息

我认为,如果网络上出现两个或更多节点,它们将能够找到彼此,而不必经过已知的端点


有人对我如何做到这一点有什么想法吗?这在ZeroMQ中是可能的吗?

你所要求的不能用zmq完成。没有任何机制(没有已知和定义的端点)允许您“知道”发布者何时联机,其消息何时可以订阅


这就是说,使用路由器(需要一个已知的端点)设置这种类型的东西是非常简单的。您还可以创建自己的“端点”,所有客户端都使用REQ/REP套接字连接到该端点。这将允许您拥有一个中心(基本上是a),然后您可以连接点对点订阅/发布连接(这将使网络复制保持在最低水平)

您可能希望通过UDP这样做:

  • 所有节点都侦听新用户的固定UDP端口
  • 当一个新节点出现时,它会向网络发送一条UDP消息(或广播,如果可用),所有其他节点都会收到该消息,从而知道它的存在
  • 现在,您可以使用固定端点,即zmq来推进通信
  • 这里有一个C示例,您可能想看看

    • 如果您有三台IP为192.168.1.10/11/12的机器
    • 在192.168.1.10和192.168.1.11上启动。/udpServer
    • 在192.168.1.12上运行。/udpClient 192.168.1.0 I-AM-HERE-192.168.1.12-PORT-7777
    • 现在192.168.1.10/11知道192.168.1.12上有一个新手在7777上运行一些侦听器

    我在局域网上的现有系统中使用UDP。它工作得很好。您必须注意的唯一问题是UDP数据包不能保证传输。他们实际上会迷路,所以你需要考虑重复广播。您还将获得数据包碎片,因此请确保消息很小,但您只需发送足够的信息来建立ZMQ、TCP或
    RabbitMQ
    或其他任何连接。其他潜在问题是防火墙和VPN