Направил UDP на IP-адрес, который не существует

Я испытываю замедления при попытке отправить сообщение UDP на несуществующий IP-адрес. Мы читаем список IP / портов из файла конфигурации и ожидаем, что эти комбинации будут существовать. В некоторых ситуациях удаленный компьютер может быть еще не подключен к сети, и IP-адрес не будет существовать в сети. В этом случае я бы предпочел, чтобы мы не пытались отправить данные.

Я ищу предложения о том, как определить, что IP не существует, чтобы пропустить отправку данных. Я не хочу полностью удалять его из списка, потому что есть вероятность, что машина может подключиться к сети, и я хотел бы продолжить отправку данных.

Соответствующий код:

int SendData(const char *data, int size, bool openIfClosed)
{
std::lock_guard<std::mutex> lock(sendMutex);

//if the socket was not already opened, close it after i do my send
bool closeAfterSend = mySocket == INVALID_SOCKET ? true : false;

if (!OpenSocket(openIfClosed))
return 0;

sockaddr_in address;
address.sin_family = AF_INET;
address.sin_port = htons(remotePort);
address.sin_addr.s_addr = remoteIPAddress.GetIPAddressAsULong();

//check if remote address exists prior to send?
int bytesSent = sendto(mySocket, data,
size, 0, (struct sockaddr *)&address, sizeof(address));
if (bytesSent == size)
numMsgsOut++;
else
{
//fail
}if (closeAfterSend && openIfClosed)
{
closesocket(mySocket);
mySocket = INVALID_SOCKET;
}

return bytesSent;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]