【问题标题】:How many ports a process can use or bind at a time?一个进程一次可以使用或绑定多少个端口?
【发布时间】:2015-09-07 19:10:34
【问题描述】:

一个进程可以同时容纳多少个操作系统端口?有没有限制? 我从 java ServerSocket 上下文中问这个问题。在我的例子中,它是一个模拟应用程序,我在其中创建了多个 -4 java 服务器套接字,监听 4 个不同的端口,以模拟 4 个可以执行相同操作的设备。这就是为什么我想知道操作系统是否有任何限制(我使用的是 Windows 7 ,32 位)?

【问题讨论】:

  • 什么操作系统??这些信息对这个问题有点关键。
  • 当你在听的时候,其他人需要知道你在哪里听。通常,您会公开一个(或几个)端口以供服务。您确定要在多个(多少)端口上收听?
  • @BoristheSpider 看我的编辑——它是 Windows
  • @Jayan 这是一个模拟应用程序。在此,我需要启动 4 个 serversockets 监听 4 个不同的端口,以模拟 4 个设备,这将在实际情况下进行。然后我考虑这个问题
  • 四个监听套接字不是问题。可能有四千。您应该将它们视为稀缺资源并尽可能保守地消耗它们。

标签: java operating-system port


【解决方案1】:

介于 1024 - 49152 之间,但上限可能因操作系统而异。

端口 0 - 1023 由 Internet 工程任务组保留用于分配的名称和编号。这些是所谓的众所周知的端口,供使用 TCP/UDP 进行通信的应用程序端点使用。

49152 到 65535 范围内的动态端口保留用于出站请求。

但是,您会在这么多端口上公开 Server,这看起来很奇怪。这种服务器的客户端跟踪 48129 个可用端口非常不方便。

【讨论】:

  • 定义“大多数应用程序”?例如,许多知名服务使用多个端口 SMB 和 FTP。
  • @user3360241 - 在我的程序中,我正在创建具有 4 个不同端口的 4 个不同的 Serversocket - 不是一个 Serversocket
  • 你说得有道理。我过分强调了,拥有 48129 个监听端口可能不是一件好事。
  • 当然你可以有多个服务器套接字,但是这些服务器套接字应该是不同服务/协议的监听器。您是否试图通过每个客户端都有服务器套接字来实现可伸缩性?
  • 是的,每个客户端都有一个服务器套接字确实很愚蠢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 2017-09-12
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
相关资源
最近更新 更多