C 当服务器断开连接时,如何使程序退出,而不是进入infinte循环?

C 当服务器断开连接时,如何使程序退出,而不是进入infinte循环?,c,linux,sockets,C,Linux,Sockets,我用C语言创建了一个服务器和客户机通信系统,当服务器关闭或退出时,客户机进入一个无限循环,重复上次收到的消息,而不是退出。我认为问题在于ReceiveMessage函数声明,但似乎无法准确指出它 我该如何解决这一问题,以及今后如何避免这一问题 当连接的另一端关闭时,recvfrom返回零,而不是

我用C语言创建了一个服务器和客户机通信系统,当服务器关闭或退出时,客户机进入一个无限循环,重复上次收到的消息,而不是退出。我认为问题在于ReceiveMessage函数声明,但似乎无法准确指出它

我该如何解决这一问题,以及今后如何避免这一问题

当连接的另一端关闭时,recvfrom返回零,而不是<0

更改您对返回结果的测试,如下所示:

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);  
}