【问题标题】:UDP connection appearing multiple times in netstat commandUDP 连接在 netstat 命令中出现多次
【发布时间】:2018-08-29 12:43:14
【问题描述】:

我运行了以下命令

我想问

为什么最后 4 行相同?这是同一个连接还是什么?

【问题讨论】:

    标签: windows networking tcp udp netstat


    【解决方案1】:

    这意味着您有多个套接字在同一个端口上侦听。这并不少见。

    使用SO_REUSEADDR 选项,多个线程或进程可以共享一个监听端口。

    这通常用作应用程序扩展 UDP 服务以使用多个线程或 CPU 内核的一种简单方法。让我们想象一个服务在 UDP 端口 3702 上侦听。假设对于每个传入的数据包,必须完成一些长时间的阻塞 I/O 操作。如果服务器应用程序是单线程的,它一次只能处理 1 个数据包。

    因此,服务器创建了 4 个线程(或 4 个进程)。每个线程创建套接字,在套接字上设置 SO_REUSEADDR 选项,绑定到端口 3702,并开始侦听 (recvfrom) 传入数据包。当传入的数据包到达时,被recvfrom 调用阻塞的线程之一将被唤醒并有一个数据包要处理。当该线程正在处理数据包时,其他线程也能够并行接收数据包。

    【讨论】:

    • “多个套接字监听同一个端口”是什么意思?我的意思是一个套接字(ip,端口对)如何监听同一个端口?
    • recvfrom 也适用于 TCP?
    • 我不知道如何解释它比我做得更好。您有两个或多个 sockets 共享一个 UDP 端口。当数据包到达 UDP 端口时,其中一个套接字将获取数据包。
    • TCP 类似但有一些不同。您可以让多个 TCP 侦听套接字共享一个端口(但在 accept 而不是 recvfrom 上被阻止)。它是一种用于扩展的不同线程模型,并且使用了 epoll 或 IOCP 等其他工具。
    猜你喜欢
    • 2019-05-07
    • 2016-12-15
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2016-09-07
    • 2015-05-10
    • 2013-10-31
    相关资源
    最近更新 更多