【问题标题】:Java - Using multiple datagramSockets and portsJava - 使用多个数据报套接字和端口
【发布时间】:2012-11-10 07:33:08
【问题描述】:

我正在开发一个使用 UDP 进行通信的多客户端/单服务器应用程序。 原因是我正在使用多播并且正在流式传输音频。

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

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

【问题讨论】:

    标签: java networking udp port


    【解决方案1】:

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

    【讨论】:

    • 是的,我现在已经这样做了。我唯一“担心”的是我有大约 7 或 8 个端口正在被持续读取。使用更少的套接字(和端口)会更好还是这不是问题?我认为如果有其他程序同时使用相同的端口,这可能是个问题。
    • 不,我说的是,服务器有一个套接字,它绑定到一个端口。所有客户端都将数据发送到同一个端口(和同一个套接字)。所以服务器有一个可以读取所有内容的套接字。那是使用 1 个端口,而不是 7 或 8。如果您担心端口被占用,请让服务器将其套接字绑定到端口 0,此时它将随机选择一个可用端口(然后您必须与您的客户)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多