1

我正在尝试编写一个将在许多机器上运行的应用程序,这些机器将通过发送 UDP 数据包流相互通信。通常一台机器会向另一台机器发送许多数据包,直到它们切换并且另一台机器会对另一台机器做同样的事情,依此类推。选择 UDP 是由于应用程序的性质(实时/速度比可靠性更重要)。我也知道 UDP 是一种无连接协议。

通过快速制作原型,我设法创建了一个 NIO 数据报服务器(绑定)和一个 NIO 数据报客户端(连接)。但是,我意识到我只能从客户端向服务器发送一种方式(或者我可能遗漏了什么?)。我无法向相反的方向发送。

此外,由于 UDP 是一种无连接协议,我认为它应该接受许多客户端向它发送数据包(n 客户端到一个服务器),反之亦然(服务器一个接一个或多个 /播送)。

我应该在客户端创建一个服务器来监听不同的端口以实现双向吗?n-client 可以同时向一台服务器发送数据包吗?我只是希望有人向我澄清这件事。不需要示例代码(尽管将不胜感激),您可以给我一些指示。

谢谢你。

4

1 回答 1

1

对于您所描述的内容,您需要在不同机器上运行的程序的每个实例和每个实例中都有一个服务器线程和一个客户端线程。

创建一个多线程程序,有一个服务线程和一个客户端线程——客户端线程需要知道所有服务器——IP 和端口。服务器只是监听当前机器上的一个端口。

如果您在多台机器上运行相同的程序,您将获得一个 p2p 组。

您还可以在互联网上的免费服务器上设置跟踪器。跟踪程序将位于一个众所周知的 URL 中,并将维护参与机器的列表。程序的每个实例在机器上启动时都会更新跟踪器连接到它所需的详细信息,跟踪器可以维护此数据的列表并与以后出现的任何新实例共享所有数据。

于 2012-07-08T17:12:01.880 回答