【问题标题】:Java multiple connection to server in dynamic portsJava 多连接到动态端口中的服务器
【发布时间】:2015-04-22 17:12:20
【问题描述】:

我需要有一个 UDP 服务器,它允许我从/向客户端接收/发送信息,这些客户端将动态打开一个带有空闲端口的套接字(所以 它将不同于设备和设备)。客户端将在同一个端口发送和接收,因此服务器必须能够与其通信。

如何将服务器设置为在每个端口中保持打开状态?如果我有 250,000 个用户,我该如何处理它们而不会出现尾部问题并防止端口被其他客户端占用?

我想过在不同的线程中用不同的套接字打开每个端口,但我不知道这是否正确。

【问题讨论】:

    标签: java sockets udp server transmission


    【解决方案1】:

    UDP 服务器只能在一个端口上侦听和打开。所有客户端都可以向该端口发送数据。服务器将必须处理每个数据,并在需要时向发送其数据的对等方作出响应。即使有多个客户端希望向服务器发送数据,这种情况也会发生。在 UDP 上下文中,一个客户端不会占用服务器端口。(除非应用程序写得不好)。

    【讨论】:

    • 所以使用 UDP 我永远不会占用端口?有 10 个客户或 500 000 个是一样的吗?我认为只使用 1 个端口可能很危险,特别是如果我必须注意 DDOS,我将只有 1 个端口来做所有事情。另外,如果每个客户端都发送到同一个端口,服务器如何响应客户端生成的随机端口进行接收?
    • 服务器可以处理多少客户端取决于应用程序的设计。重点是 UDP 协议并不是说只有一个客户端可以连接到一个开放端口。如果 DDOS 可以在端口中发生,那么它也可以在您打开的许多端口中创建。服务器从它接收到的数据中知道对端 IP 地址和端口。
    • 如果我的客户端已经占用了我在我的服务器中选择接收的端口,客户端可以发送数据到这个端口吗?
    • 客户端不“占用”端口。他们不会被绑定到那个端口。没有像 TCP 那样建立连接。他们将数据发送到服务器端口。它可以到达或丢失。尝试使用简单的服务器和客户端。在端口上运行一个服务器实例。许多客户端程序实例运行以从服务器发送/接收数据。
    • 我的意思是它可能会导致问题,因为我的应用程序需要发送另一个应用程序占用的端口来接收。
    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多