Я хотел бы создать надежную систему, будучи клиентом для подключения к основному серверу. В случае сбоя основного сервера мне необходимо подключиться к удаленным серверам (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;
}
}