美文网首页
listen()函数

listen()函数

作者: 狗尾巴草败了 | 来源:发表于2017-09-10 00:08 被阅读0次

    listen()函数仅有TCP服务器调用

    #include<sys/socket.h>
    int listen(int sockfd, int backlog)

    调用listen(),导致套接字从CLOSED状态变为LISTEN状态。
    本函数通常在调用socket()和bind()函数之后,并在调用accept()之前

    内核为任何一个给定的监听套接字维护两个队列:

    1. 未完成连接队列
      某个客户发送SYN请求到服务器,然后服务器将等待TCP三次握手完成的时期,这些套接字处于SYN_RCVD状态
    2. 已完成连接队列
      每个已完成的TCP三次握手过程的客户对应其中一项,这些套接字处于*ESTABLISHED状态

    当三次握手正常完成,该套接字就从未完成连接队列移动到已完成连接队列的队尾。
    当进程调用accept()时,已完成连接队列的对头将返回给进程,如果队列为空,那么进程将投入睡眠。

    相关文章

      网友评论

          本文标题:listen()函数

          本文链接:https://www.haomeiwen.com/subject/ofxzjxtx.html