C 当服务器断开连接时,如何使程序退出,而不是进入infinte循环?
我用C语言创建了一个服务器和客户机通信系统,当服务器关闭或退出时,客户机进入一个无限循环,重复上次收到的消息,而不是退出。我认为问题在于ReceiveMessage函数声明,但似乎无法准确指出它 我该如何解决这一问题,以及今后如何避免这一问题 当连接的另一端关闭时,recvfrom返回零,而不是<0 更改您对返回结果的测试,如下所示:C 当服务器断开连接时,如何使程序退出,而不是进入infinte循环?,c,linux,sockets,C,Linux,Sockets,我用C语言创建了一个服务器和客户机通信系统,当服务器关闭或退出时,客户机进入一个无限循环,重复上次收到的消息,而不是退出。我认为问题在于ReceiveMessage函数声明,但似乎无法准确指出它 我该如何解决这一问题,以及今后如何避免这一问题 当连接的另一端关闭时,recvfrom返回零,而不是
if (ret == 0)
{
printf("Connection closed!\n");
exit(0);
}
else if (ret < 0) {
printf("Error connecting to the server!\n");
exit(1);
}
recvfrom的手册页指出,当流套接字对等方执行有序关闭时,返回值将为0,即传统的文件结束返回。您的代码不处理这种情况,只处理-1。
if (ret == 0)
{
printf("Connection closed!\n");
exit(0);
}
else if (ret < 0) {
printf("Error connecting to the server!\n");
exit(1);
}