如何在保持当前连接的同时连接多台服务器?

时间:2017-11-25 09:40:03

标签: java multithreading

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

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

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

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

但是,我还必须通过发送字符串(每30秒由协议指定)保持与当前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
    }

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

此外,我希望我的问题写得很好,如果你将其投票,请告诉我如何改进它。

1 个答案:

答案 0 :(得分:0)

  

我希望能够维持连接并创建新连接。

你需要一个循环,它在同一个循环中完成,

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

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

OR

你可以有一个单独的线程管理每个连接,根据需要发送心跳,而你的主线程只涉及要建立的连接。

OR

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

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