首页 文章

ServerSocket是否为每个连接创建一个新套接字? [重复]

提问于
浏览
1

这个问题在这里已有答案:

我在Socket tutorial中阅读了以下声明 .

如果一切顺利,服务器将接受连接 . 接受后,服务器获取绑定到同一本地端口的新套接字,并将其远程 endpoints 设置为客户端的地址和端口 . 它需要一个新的套接字,以便它可以继续监听原始套接字以获得连接请求,同时满足连接客户端的需求 .

以下是我的问题:

  • 请从上面纠正我的理解 - 我通过指定一个端口打开一个套接字( ServerSocket ),比方说8001,现在我的服务器将开始侦听此端口上的请求,现在它收到来自客户端的请求,如 http://abc:8001/test ,所以一旦它接受连接,它将创建一个本地端口,让我们说10001,所以现在这个客户端请求将被接受超过10001(或者换句话说,与客户端的连接将通过端口10001 Build ),而8001将再次免费并且正在监听新的要求?

  • 那么,这是否意味着我用 ServerSocket 指定的原始端口永远不会用于 Build 连接?

  • 那么,这是否意味着,如果我与客户端 Build 连接,请说通过端口9001,那么在同一个9001端口上永远不会再发生一次通信(或者换句话说 Build 连接),直到我原来的请求为止餐饮完成了吗?

请随时详细了解这些问题的概念,这不仅有助于我,也有助于未来的访客 .

1 回答

  • 2

    ServerSocket是否为每个连接创建一个新套接字?

    是 .

    我通过指定端口打开一个套接字(ServerSocket),比方说8001,现在我的服务器将开始侦听此端口上的请求,现在它从客户端获取请求,如http:// abc:8001 / test,所以一旦它接受连接,它将创建一个本地端口,让我们说10001,

    没有 .

    所以现在这个客户请求将在10001年受理

    没有 .

    (或者换句话说,与客户的连接将通过端口10001 Build )

    没有 .

    8001将再次免费并收听新请求?

    是 .

    那么,这是否意味着我使用ServerSocket指定的原始端口永远不会用于 Build 连接?

    没有 .

    那么,这是否意味着如果我与客户端 Build 连接,让我们说通过端口9001,那么在同一个9001端口上永远不会再发生一次通信(或者换句话说 Build 连接),直到我原来的请求为止餐饮完成了吗?

    没有 .

    接受的套接字使用与listienng套接字相同的本地端口,与您引用的文本完全相同 .

    根据您的磁贴,您根据问题的主体使用新端口混淆了新的套接字 .

相关问题