Linux 套接字系统调用 "accept" 永远不会返回?
Linux Socket System call "accept" never returning?
我 运行 在尝试测试一个简单的套接字程序时遇到了一个奇怪的问题。当我在这里调用 "accept" 函数时,我的程序似乎挂起...它打印出 "SENPAI PLS" 但从来没有 "SADDASSDA".
昨晚我已经通过了这部分代码。对于上下文,这是 运行 在一个大型服务器上,还有很多其他学生可能正在尝试做与我相同的项目,而且我确信他们中的一些人正在离开他们的服务器程序 运行。
服务正忙或已满是否会导致 accept 永远无法完成?
do{
printf("SENPAI PLS\n");
clientFD=accept(serverFD, (struct sockaddr *) &clientAddress, &clientAddressSize);
printf("SADDASSDA\n");
if(clientFD==-1){
sleep(1);
}
}while (clientFD==-1);
accept
不会 return 直到连接被接受(除非侦听套接字处于非阻塞模式)。
我 运行 在尝试测试一个简单的套接字程序时遇到了一个奇怪的问题。当我在这里调用 "accept" 函数时,我的程序似乎挂起...它打印出 "SENPAI PLS" 但从来没有 "SADDASSDA".
昨晚我已经通过了这部分代码。对于上下文,这是 运行 在一个大型服务器上,还有很多其他学生可能正在尝试做与我相同的项目,而且我确信他们中的一些人正在离开他们的服务器程序 运行。
服务正忙或已满是否会导致 accept 永远无法完成?
do{
printf("SENPAI PLS\n");
clientFD=accept(serverFD, (struct sockaddr *) &clientAddress, &clientAddressSize);
printf("SADDASSDA\n");
if(clientFD==-1){
sleep(1);
}
}while (clientFD==-1);
accept
不会 return 直到连接被接受(除非侦听套接字处于非阻塞模式)。