为每个客户端编写具有多个UDP连接的Java服务器

时间:2014-09-30 10:09:40

标签: java android sockets udp

首先,我要介绍一下这种情况:我创建了一个应用程序,可以在两个Android设备之间发送视频和音频(在客户端和服务器之间直接连接)。现在我想更进一步,使用在计算机上运行的专用Java服务器;此服务器必须桥接这些客户端和服务器应用程序之间的流量。例如,首先两个android应用程序将与计算机服务器连接,然后,从第一个设备获得的所有视频数据将被发送到服务器,然后发送到第二个设备。

快速回答可能是:在服务器内部,为每个存在的套接字创建两个套接字,然后使用它们来桥接数据。 问题是我有5个UDP套接字:Audio Tx和Rx,客户端的视频Tx和Rx和Orders Tx,以及服务器端的Audio Tx和Rx,视频Tx和Rx以及Orders Rx,我也有一个TCP Socket管理通信。

所以我现在唯一的选择是:

客户端APP -----------计算机服务器-------------服务器APP

音频Tx -------------------------->音频Rx | Audio Tx ------------------------->音频Rx

音频Rx< --------------------------音频Tx |音频Rx< ------------------------音频Tx

视频Tx -------------------------->视频Rx |视频Tx ------------------------>视频Rx

视频Rx< ------------------------- Video Tx | Video Rx< ------------------------ Video Tx

订单Tx ---------------------->订单Rx |订单Tx ----------------------->订单Rx

TCP< -----------------------------------> TCP | TCP< -----------------------------> TCP

这是管理/编码/维护的绝对地狱。

第二种选择是使用NIO,但在发送大量数据时不建议这样做。

这是最好的方法吗?如果没有,有没有办法减少服务器中的UDP套接字数量,因为它们只会在两个设备之间桥接数据?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

但是您的计算机服务器中是否需要那么多不同的R / T插座?中继音频是否与视频或订单不同?除了转发传入的数据包,服务器没有其他任何事情可做所以在我看来,你只需要编程一个RT模块。然后为你的5个流实例化它5次。