2012-11-21 36 views
1

我正在使用UDP进行通信的多客户端/单服务器应用程序。 原因是我正在使用多点传送,并且正在流式传输音频。Java - 使用多个数据报套接字和端口

我在UDP/TCP方面还没有太多的经验,我不确定是否可以使用几个不同端口的多个DatagramSockets。 我有几个不同的对象,我需要从一个设备发送到另一个,因此我为每种类型的对象使用一个端口。

这样好吗?我现在已经在使用大约7个不同的端口。 如何尽可能使用最小端口?

回答

1

对于多个客户端和一台服务器,可以让所有客户端将数据发送到服务器上的相同端口。服务器将读取来自一个套接字(正在读取该端口上的数据)的所有信息。每个发送数据的客户端都可以发送元数据以及识别用户的每个有效负载,因此服务器可以识别哪个接收的数据包属于谁。实际上,我认为你已经可以看到数据包来自使用内置功能的地址。您可以使用这些地址来识别不同的客户端,但是您可能需要一个更强大的解决方案来使您的实施更加安全。

+0

是的,我现在已经在做这个了。我唯一担心的是我有大约7或8个端口正在被读取。使用更少的套接字(和端口)更好还是这不成问题?我认为如果有其他程序正在运行,并且巧合地使用相同的端口,则可能会出现问题。 – dumazy

+1

没有我说的是,服务器有一个套接字,它绑定到一个端口。所有客户端都将数据发送到同一端口(和相同的套接字)。所以服务器有一个读取所有内容的套接字。那就是使用1端口,而不是7或8.如果您担心端口被占用,请让服务器将其套接字绑定到端口0,此时它将随机选择一个可用端口(然后您必须与您的端口通信客户以某种方式)。 – wardd