当使用Socket类时,一个是在某个端口上与服务器 Build TCP连接,但在服务器上,ServerSocket能够为每个接受请求处理多个客户端连接,并将其委托给一个线程来为请求提供服务 . 但是,如何使ServerSocket类在同一端口上接受多个tcp连接 .
这是否意味着由操作系统来决定它允许的连接数或允许的最大积压数是多少,这可以由OS上的应用程序控制(我的意思是java受OS支持的最大积压限制)并且是TCP规范中的积压连接是否有任何特权?
最好的反馈,凯沙夫
运行服务器的操作系统使用远程端口号来区分与服务器的各种连接 .
TCP连接由一组唯一的(源IP,源端口,dest IP,dest端口)定义 . 由于服务器绑定到特定端口,因此它定义了这4个变量中的两个 . 只要客户端都来自不同的IP和/或不同的端口,就不会有问题 .
是的,操作系统可以控制允许的总连接数,并且您的程序可以进一步限制 .
它为多个客户提供服务,您可以选择同时处理的客户端数量 .
通过ClientIP / ClientPort / ServerIP / ServerPort标识的连接(也称为客户端和服务器之间的 Socket ) .
Socket
您只需要接受连接(并且通常在不同的线程中处理它们) .
默认情况下,积压大小为50,但您可以在创建 ServerSocket 时进行设置 .
ServerSocket
new ServerSocket(21, 100); //Create a server socket with a backlog of 100
Resources :
javadoc - Socket
Sun.com - All about sockets
3 回答
运行服务器的操作系统使用远程端口号来区分与服务器的各种连接 .
TCP连接由一组唯一的(源IP,源端口,dest IP,dest端口)定义 . 由于服务器绑定到特定端口,因此它定义了这4个变量中的两个 . 只要客户端都来自不同的IP和/或不同的端口,就不会有问题 .
是的,操作系统可以控制允许的总连接数,并且您的程序可以进一步限制 .
它为多个客户提供服务,您可以选择同时处理的客户端数量 .
通过ClientIP / ClientPort / ServerIP / ServerPort标识的连接(也称为客户端和服务器之间的
Socket
) .您只需要接受连接(并且通常在不同的线程中处理它们) .
默认情况下,积压大小为50,但您可以在创建
ServerSocket
时进行设置 .Resources :
javadoc - Socket
Sun.com - All about sockets