serversocket类如何在同一端口上提供多个客户端连接?

时间:2010-09-16 18:52:31

标签: java tcp serversocket backlog

当使用Socket类时,一个是在某个端口上与服务器建立TCP连接,但在服务器上,ServerSocket能够为每个接受请求处理多个客户端连接,并将其委托给一个线程来为请求提供服务。但是,如何使ServerSocket类在同一端口上接受多个tcp连接。

这是否意味着由操作系统决定它允许的连接数或允许的最大积压数是多少?这可以由OS上的应用程序控制(我的意思是java受操作系统支持的最大积压限制) )TCP规范中的积压连接是否有任何专有权?

最好的反馈,
凯沙夫

3 个答案:

答案 0 :(得分:8)

TCP连接由一组唯一的(源IP,源端口,dest IP,dest端口)定义。由于服务器绑定到特定端口,因此它定义了这4个变量中的两个。只要客户端都来自不同的IP和/或不同的端口,就不会有问题。

是的,操作系统可以控制允许的总连接数,并且您的程序可以进一步限制它。

答案 1 :(得分:3)

它为多个客户提供服务,您可以选择同时处理多少个客户。

客户端和服务器之间的连接(也称为Socket不仅由ServerIP / ServerPort标识,而且还通过ClientIP / ClientPort / ServerIP / ServerPort标识。

您只需接受连接(通常在不同的线程中处理它们)。


默认情况下,积压大小为50,但您可以在创建ServerSocket时进行设置。

new ServerSocket(21, 100); //Create a server socket with a backlog of 100

资源:

答案 2 :(得分:-1)

运行服务器的操作系统使用远程端口号来区分与服务器的各种连接。