gpt4 book ai didi

java - 如何在保持当前连接的情况下连接到多个服务器?

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:05 24 4
gpt4 key购买 nike

我正在用java编写一个应用程序,

该应用程序的工作方式是,它必须连接到专用网络中的每一台服务器,并且只给出一个起始端口和 IP,

我在此应用程序中做的第一件事是连接到命令行指定的 IP 和端口,(通过启动一个新线程)

建立此连接后,我会收到必须连接的更多 IP 和端口的列表。

但是,我还必须通过发送字符串(每 30 秒由协议(protocol)指定)来保持与当前 IP 和端口的“打开”连接;

问题是:一旦我从初始连接收到列表,我就会进入一个无限运行的 while(true) 循环,并每 30 秒发送一个指定的字符串(这让另一端知道我仍然在那里)

但是,由于循环无限运行,我无法连接到其他 IP 和端口,因为我需要跳出循环才能启动新线程来连接到另一个 IP。

我的代码有点麻烦所以我会尝试用伪代码来解释它:(如果有帮助,我可以编辑以发布我的实际代码)

Main:
port = args[0]
IP = args[1]
try{
new Thread
}


Thread:
connect(Ip, Port)
recieve IPlist
while(true){ <---- this is where I get stuck
send ping every 30 seconds
}

我希望能够维持连接并创建新的连接。我认为这更多的是一个设计问题,而不是编码问题。

另外,我希望我的问题写得很好,如果您否决它,请告诉我如何改进它。

最佳答案

I want to be able to maintain the connection AND create new ones.

您需要一个在同一个循环中执行这两项操作的循环,

while(true){ <---- this is where I get stuck
open any connection which need openning
send ping every 30 seconds
any thing else.
}

这有一个问题,如果一个连接阻塞,可能会导致你所有的连接无法发送心跳,但实现起来很简单。

或者

您可以让一个单独的线程管理每个连接,根据需要发送心跳,而主线程只关心要建立哪个连接。

或者

您有一个线程用于向所有打开的连接发送心跳,而主线程则管理哪些连接应该打开。

你觉得最简单的取决于你。

关于java - 如何在保持当前连接的情况下连接到多个服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484538/

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