2017-07-07 98 views
1

我正在使用套接字。我想知道有多少人可以使用套接字连接到我的SocketServer?有多少人可以连接到ServerSocket?

根据卡梅伦,它是2^16不同的连接。因此,多达2^16人可以同时使用我的聊天(处理这么多用户的资源以及其他因素都不被考虑)。

https://www.quora.com/How-many-connections-can-a-JAVA-socket-server-hold

+0

卡梅隆看起来贡献了很多,但没有什么比测试时真实的测试证明什么是真实的。构建测试并执行它不应该花很长时间。在向应用程序添加功能时,您需要添加到测试套件中,并在部署之前祝福其结果。 – jeff6times7

+0

另外一个快速提醒,'ServerSocket'的最大队列大小是50个传入连接,以及任何被阻塞的过去。我认为假设你已经*接受了*与这个问题的联系,但是我认为如果你期望有大量的用户可能会发表评论。 – Dewick47

+0

@ jeff6times7因此,从理论上讲,只用一个ServerSocket就可以处理如此庞大的用户数? – Steve

回答

2

的理论极限为2^16 - 1.端口零被保留。

实际限制将是平台特定的,只能通过测试来确定。

的限制因素包括:

  • 可用的网络吞吐量,
  • 该OS内核可以维持的同时连接的数量,
  • 一个进程被允许打开文件描述符的数量,和
  • 维持大量活动连接所需的进程内资源。

其中大多数最有可能是硬件限制。


的50人在上述评论谈话的限制是连接请求,可以是排队的数量。如果你的Java应用程序调用ServerSocket.accept()足够快,请求将不会被丢弃。

+0

谢谢。我实际上正在开发聊天应用程序。你能告诉我有多少用户可以在这个聊天中注册吗?这个数字是否等于2^16-1?还是50呢? – Steve

+0

查看更新。它回答你的问题。 –

+0

那么,如果51用户将同时连接,最后一个将没有机会连接? – Steve

0

在Mac和Linux上,您可以执行“ulimit”,它会告诉您操作系统定义的限制。