gpt4 book ai didi

java - UDP 组播是正确的选择吗?

转载 作者:行者123 更新时间:2023-12-02 07:46:31 25 4
gpt4 key购买 nike

我的 Java Socket 经验有限,并且全部使用 TCP。我正在尝试学习UDP。我正在运行一个使用 UDP 多播的多进程应用程序。经过一些简短的研究(以及我对该主题的初步了解),我认为多播将是正确的方法。

打个比方,我希望所有进程共享同一个“房间”,并且应该互相“喊叫”。因此,当进程 1 发送消息“hello”时,我希望所有进程 2..n 都接收到该数据包,反之亦然。

起初一切似乎都正常,但后来我意识到我有一个错误(如果你可以这样调用它)。我启动第一个进程,当我启动第二个进程时,第一个进程收到第二个进程的消息,但反之则不然。

我想知道,当我在进程 1 上执行 MulticastSocket receive() 时,是否有效地将 DatagramPacket 从堆栈中取出,然后进程 2 何时看不到它是recieve()吗?

最佳答案

问题不在于协议(protocol)的选择 - TCP/IP 没有帮助,UDP 广播也没有帮助。

问题是当当前没有任何东西在监听时,操作系统的网络堆栈不会缓冲网络流量。这就是第二个过程所发生的情况。

简而言之,你的方案行不通。

<小时/>

一种替代方法是让"new"进程多播“谁在那儿”消息,并让所有其他进程以多播或定向数据包进行响应。然而,你在这里重新发明轮子。这个问题之前已经通过各种“中间件”堆栈解决过很多次。

关于java - UDP 组播是正确的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com