Я написал приложение, которое отправляет некоторые файлы на несколько сайтов.Если некоторые сайты не работают, то как мне справиться с подключением.Должен ли я просто отбросить сайты (проще) или попытаться повторно подключиться к ним через определенный промежуток времени и в течение определенного фиксированного числа раз (я считаю правильным).
Я уже написал заявки наПоддержка отправки и получения файлов.В следующем коде
//I have added one more loop to process all the configured sites.
int socketHandle = 0;
struct addrinfo ipList, *listHead = nullptr, *listElement = nullptr;
cout << "Trying to connect to " << serverName << " on port " << serverPort << endl;
memset(&ipList, '\0', sizeof(struct addrinfo));
ipList.ai_family = AF_UNSPEC;
ipList.ai_socktype = SOCK_STREAM;
ipList.ai_protocol = IPPROTO_TCP;
if((socketHandle = getaddrinfo(serverName, serverPort, &ipList, &listElement)) != 0)
{
cout << "getaddrinfo error for " << serverName << " " << serverPort << " " << gai_strerror(socketHandle) << endl;
}
listHead = listElement;
bool bConnected = false;
int nLastError = 0;
do{
m_nSocketHandle = socket(listElement->ai_family, listElement->ai_socktype, listElement->ai_protocol);
if(m_nSocketHandle == 0)
{
continue;
}
nLastError = connect(m_nSocketHandle, listElement->ai_addr, listElement->ai_addrlen);
if(nLastError == 0)
{
bConnected = true;
break;
}
nLastError = GetLastError();
close(m_nSocketHandle);
m_nSocketHandle = 0;
}while ((listElement = listElement->ai_next) != NULL);
freeaddrinfo(listHead);/*It loops over and frees the whole list*/
Мой вопрос просто с точки зрения дизайна.Было бы полезно, если бы кто-то мог выразить свои мысли и предложить свое понимание.Это мой один из самых первых вопросов.