我正在用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/