Windows 在netstat命令中多次出现UDP连接

Windows 在netstat命令中多次出现UDP连接,windows,networking,tcp,udp,netstat,Windows,Networking,Tcp,Udp,Netstat,我运行了以下命令 我想问一下 为什么最后4行是相同的?这是同一个连接还是什么?这意味着您在同一端口上侦听多个套接字。这并不罕见 使用该选项,多个线程或进程可以共享一个侦听端口 这通常是应用程序扩展UDP服务以使用多个线程或CPU核心的一种简单方法。让我们设想一个服务在UDP端口3702上侦听。假设对于每个传入的数据包,必须执行一些长阻塞I/O操作。如果服务器应用程序是单线程的,那么它一次只能处理1个数据包 因此,服务器创建4个线程(或4个进程)。每个线程创建套接字,在套接字上设置SO_REUS

我运行了以下命令

我想问一下


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

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

使用该选项,多个线程或进程可以共享一个侦听端口

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


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

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

使用该选项,多个线程或进程可以共享一个侦听端口

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


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

让“多个套接字在同一端口上侦听”意味着什么?我的意思是一个套接字(ip,端口对)如何监听同一个端口?
recvfrom
也适用于TCP?我不知道如何更好地解释它。您有两个或多个套接字共享一个UDP端口。当数据包到达UDP端口时,其中一个套接字将获得该数据包。TCP与UDP端口类似,但有一些不同。您可以让多个TCP侦听套接字共享一个端口(但在
accept
而不是
recvfrom
上被阻止)。它是一种不同的线程模型,用于扩展和使用其他工具,如epoll或IOCP。让“多个套接字侦听同一端口”意味着什么?我的意思是一个套接字(ip,端口对)如何监听同一个端口?
recvfrom
也适用于TCP?我不知道如何更好地解释它。您有两个或多个套接字共享一个UDP端口。当数据包到达UDP端口时,其中一个套接字将获得该数据包。TCP与UDP端口类似,但有一些不同。您可以让多个TCP侦听套接字共享一个端口(但在
accept
而不是
recvfrom
上被阻止)。它是一种不同的线程模型,用于扩展和使用其他工具,如epoll或IOCP。