【发布时间】:2016-05-07 21:32:30
【问题描述】:
我在尝试测试一个简单的套接字程序时遇到了一个奇怪的问题。当我在这里调用“接受”函数时,我的程序似乎挂起......它打印出“SENPAI PLS”但从不打印“SADDASSDA”。
昨晚我正在通过这部分代码。就上下文而言,这是在一台大型服务器上运行的,有很多其他学生可能正在尝试和我做同样的项目,我相信他们中的一些人正在让他们的服务器程序运行。
服务繁忙或完全可以接受永远不会完成吗?
do{
printf("SENPAI PLS\n");
clientFD=accept(serverFD, (struct sockaddr *) &clientAddress, &clientAddressSize);
printf("SADDASSDA\n");
if(clientFD==-1){
sleep(1);
}
}while (clientFD==-1);
【问题讨论】:
-
我假设您有一些客户端程序试图连接到它。
accept会一直阻塞,直到有连接进来。你的客户端发生了什么? -
accept 函数本身有一个循环,直到尝试连接?
-
accept在连接被接受之前不会返回(除非监听套接字处于非阻塞模式)。 -
好的,太好了!这就是我需要知道的,非常感谢!