我正在尝试“测试”UDP套接字是否打开作为终止程序的一种方式:
int flags = fcntl(s, F_GETFL, 0);
fcntl(s, F_SETFL, flags | O_NONBLOCK);
int x = recv(s, buffer, sizeof(buffer), 0);
if (x == -1)
{
char temp[] = "Testing Connection";
int x = sendto(s, temp, sizeof(temp), 0, (struct sockaddr *)&si_other, sizeof(si_other));
printf("%d\n",x);
if(x == -1){
return;
}
continue;
}
但是 if 语句没有被触发。它正在发送数据以运行以下行的 UDP 套接字(我知道它运行是因为打印语句打印
printf("Closing the socket\n");
close(s);
return;
即使它试图发送到的 udp 套接字已关闭,sendto 也会连续返回一个正值。有什么办法可以解决这个问题吗?