美文网首页
当套接字处于监听状态时,Recv-Q表示未被accept的连接数

当套接字处于监听状态时,Recv-Q表示未被accept的连接数

作者: 书唐瑞 | 来源:发表于2020-05-17 00:35 被阅读0次

    我们通过python验证

    当套接字处于监听状态时,Recv-Q表示未被accept的连接数
    当套接字处于监听状态时,Send-Q表示listen backlog值

    环境
    Ubuntu虚拟机(5.3.0-51-generic)的IP192.168.233.130
    宿主机mac的IP192.168.0.100

    在虚拟机中运行服务端,然后在宿主机上连接服务端

    监听端口在8080,可以使用

    ufw allow 8080
    

    开启端口

    首先看下服务端代码server.py

    #! /usr/bin/python3
    
    import socket
    import sys
    import time
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    host = '192.168.233.130'
    port = 8080
    
    server.bind((host, port))
    server.listen(5) # 设置backlog=5
    
    while True:
        print("等待客户端连接")
        time.sleep(1000000) # 让线程休眠,不让执行下面的accept,方便我们观察现象
        cli,addr  = server.accept()
        print("连接地址: %s" % str(addr))
        cli.send("欢迎访问服务器".encode('utf-8'))
        cli.close()
    
    

    通过

     ./server.py
    

    运行服务端

    image.png

    通过

    ss -antlp
    

    查看到Send-Q 的值等于5,这个值也是我们在代码中设置的,在监听状态下它表示listen backlog值.

    然后我们在宿主机通过telnet连接服务端.

    image.png

    发起了三次连接

    image.png

    再执行ss -antlp 命令,我们发现Recv-Q的值等于了3,表示有3个客户端连接到服务器,而且这三个客户端没有被accept
    的确服务端没有accept,因为这个时候我们的代码通过time.sleep()让线程休眠了.

    相关文章

      网友评论

          本文标题:当套接字处于监听状态时,Recv-Q表示未被accept的连接数

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