gpt4 book ai didi

c - 当网络连接不可用时阻止发送 UDP 数据

转载 作者:行者123 更新时间:2023-11-30 14:28:28 26 4
gpt4 key购买 nike

我有一个 C 应用程序,每隔几秒就向 UDP 服务器发送数据。如果客户端失去网络连接几分钟,然后恢复连接,它会将所有累积的数据发送到服务器,这可能会导致该客户端同时向服务器发出一百个或更多请求。

如果在使用 UDP 传输过程中发生错误,是否有办法阻止这些消息从客户端发送?来自 UDP 客户端的 connect 调用是否有助于确定客户端是否可以连接到服务器?或者这只能使用 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);

最佳答案

听起来您得到的行为是来自在套接字 sndbuf 中缓冲的数据报,如果无法立即发送这些数据报,您希望将其删除?

如果是这种情况,您可能会幸运地将 sndbuf 的大小设置为零。

警告——这一行为领域听起来非常接近“特定于实现”的领域。

关于c - 当网络连接不可用时阻止发送 UDP 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com