我想通过作为客户端连接到主服务器来创建一个可靠的系统。如果主服务器出现故障,我需要连接到远程服务器(其中3台)。一旦建立与其中一个的连接,我需要尝试再次连接到主服务器(如果它又回来了),然后切换到主服务器并从刚连接的远程服务器断开连接。
我为Tx和Rx创建了两个线程。我是否需要创建另一个线程,如果该线程失败,它将尝试连接到主线程,并将主线程的FD(文件描述符)交给线程管理?
让我知道如何处理这种情况。与主服务器断开连接后,我知道如何连接另一台服务器。
while (!socketWrapperPtr->isStopping())
{
if (!socketWrapperPtr->createSocket())
{
if (numberOfConnectionTrials > 3)
{
index = getNextremoteServerIndex();
socketWrapperPtr->setIpAdressAndPort(IPservers(index), Ports(index));
numberOfConnectionTrials =0;
}
numberOfConnectionTrials++;
sleep(30);
}
else
{
connected = true;
}
}