У меня есть приложение C, которое отправляет данные на сервер UDP каждые несколько секунд.Если клиент потеряет свое сетевое соединение на несколько минут, а затем вернет свое соединение, он отправит все накопленные данные на сервер, что может привести к тому, что сотни или более запросов одновременно поступят на сервер от этого клиента.
Есть ли способ предотвратить отправку этих сообщений от клиента, если во время передачи по UDP произошла ошибка?Поможет ли connect
звонок от UDP-клиента определить, может ли клиент подключиться к серверу?Или это возможно только при использовании TCP?
int socketDescriptor;
struct sockaddr_in serverAddress;
if ((socketDescriptor = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
printf("Could not create socket. \n");
return;
}
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = inet_addr(server_ip);
serverAddress.sin_port = htons(server_port);
if (sendto(socketDescriptor, data, strlen(data), 0,
(struct sockaddr *)&serverAddress, sizeof(serverAddress)) < 0)
{
printf("Could not send data to the server. \n");
return;
}
close(socketDescriptor);