Netty双向和n客户端UDP

时间:2012-07-08 17:06:51

标签: java udp client-server netty

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

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

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

我应该在客户端创建一个服务器来监听另一个端口以实现双向连接吗? n-client能否同时向一台服务器发送数据包? 我只想要有人向我清除这件事。不需要示例代码(虽然会非常感激),但您可以给我一些指示。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

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