【问题标题】:Linux Socket System call "accept" never returning? [closed]Linux Socket系统调用“接受”永远不会返回? [关闭]
【发布时间】: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 在连接被接受之前不会返回(除非监听套接字处于非阻塞模式)。
  • 好的,太好了!这就是我需要知道的,非常感谢!

标签: c linux sockets system


【解决方案1】:

accept 在接受连接之前不会返回(除非侦听套接字处于非阻塞模式)。

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 2019-12-21
    • 2017-12-06
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多