我在Socket tutorial中阅读了以下声明。
如果一切顺利,服务器会接受连接。的一旦 接受,服务器获取绑定到同一本地端口的新套接字 并且还将其远程端点设置为的地址和端口 客户。 它需要一个新的套接字,以便它可以继续收听 连接请求的原始套接字,同时满足需要 连接的客户端。
以下是我的问题:
ServerSocket
),比方说8001,现在我的服务器将开始侦听此端口上的请求,现在它从客户端获取请求,类似于http://abc:8001/test
,所以一旦接受连接,它就会创建一个本地端口,比如说10001,所以现在这个客户端请求将被接受超过10001(或者换句话说,客户端的连接将通过端口10001建立)而8001将再次免费并收听新请求?ServerSocket
指定的原始端口永远不会用于建立连接?请随时详细了解这些问题的概念,这不仅有助于我,也有助于未来的访客。
答案 0 :(得分:2)
ServerSocket
是否为每个连接创建一个新套接字?
是
我通过指定端口打开一个套接字(ServerSocket),比方说8001,现在我的服务器将开始侦听此端口上的请求,现在它收到来自客户端的请求,如http://abc:8001/test,所以一次它接受它将创建本地端口的连接让我们说10001,
没有
所以现在这个客户请求将在10001以上受理
没有
(或者换句话说,与客户端的连接将通过端口10001建立)
没有
而8001将再次免费并收听新请求吗?
是
那么,这是否意味着我用ServerSocket指定的原始端口永远不会用于建立连接?
没有
那么,这是否意味着如果我与客户端建立连接,请说通过端口9001,那么在原始请求之前,在同一个9001端口上永远不会再发生一次通信(或者换言之,建立连接)我餐饮完成了吗?
没有
接受的套接字使用与listienng套接字相同的本地端口,与您引用的文本完全相同。
根据您的问题,您根据问题正文将新插槽与新端口混淆。