gpt4 book ai didi

java - TCP:当服务器监听随机端口时,客户端如何知道要发送到哪个端口?

转载 作者:行者123 更新时间:2023-12-03 12:03:33 24 4
gpt4 key购买 nike

问题:在 java 中,您可以使用 ServerSocket(0) 在服务器上创建一个套接字,它将选择一个随机端口进行监听。但是,当您在客户端上创建一个套接字以使用 Socket(addr, port) 发送消息时,没有明显的方法可以确定您需要发送到服务器上的哪个端口。除了基本的“如果您输入 0 它将选择一个随机端口”之外,我无法通过网络搜索找到有关此选项的任何信息。有谁知道或有资源可以从客户端解释这个场景应该是什么样子?

一些背景知识:我目前正在将系统从 UDP 转换为 TCP。我需要服务器监听随机端口的原因是我的服务器/客户端没有严格的服务器/客户端关系。因此,这种情况下的“服务器”实际上是一个应用程序,我需要在一台 PC 上打开多个实例。具有预定发送/接收端口的旧方法是导致只有一个实例能够打开一个端口,并且所有通信都被重定向到该实例。我的理解是解决这个问题的最好方法是让每个实例使用不同的端口,而最好的方法是使用 ServerSocket(0)。尽管包括了这个背景,但我不想评论情况有多困惑,只想回答与问题有关的问题。

最佳答案

如果固定端口号不是服务器记录的设置/协议(protocol)的一部分,那么客户端弄清楚的唯一方法是让正在运行/Activity 的服务器在某个数据存储中发布该信息,其位置和详细信息已记录并已知由客户端,以及客户端可以访问该数据存储的位置。

[或者让客户端在每次想要连接时运行端口扫描。它会起作用,但可能不如您的用户想要的那么快。]

而你的情况确实是一团糟。

关于java - TCP:当服务器监听随机端口时,客户端如何知道要发送到哪个端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48936624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com