如何检查本地主机上我的电脑上是否打开了一组 10,000 个连续端口?

how to check whether a set of 10,000 consecutive ports are open on my pc at localhost?

总而言之,我想要在本地主机上打开 10000 个端口,而且对于我的项目来说,这太连续了,比如 55000 到 65000。我想确保端口集(10,000 个连续端口)是打开的。

在这里我描述了三类端口:-

众所周知的端口是从 0 到 1023 的端口。

注册端口是从 1024 到 49151 的端口

动态 and/or 私有端口是从 49152 到 65535

我想知道一些可以解决我的问题的 cmd 命令。(我正在使用 windows OS)。

我的系统支持 netstat,但我需要一些其他命令或工具来解决我的问题,因为我发现 netstat 非常耗时且需要手动检查。

提前致谢

实际上,Windows 有一个 netstat,您可以处理它的输出以查找已建立的会话:

C:\pax> netstat -na

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    10.6.0.127:54140       143.127.136.95:443     ESTABLISHED
  TCP    10.6.0.127:54259       192.168.2.47:32308     ESTABLISHED
  TCP    10.6.0.127:54263       192.168.2.47:32308     ESTABLISHED
  TCP    10.6.0.127:54274       192.168.2.22:50207     ESTABLISHED
  TCP    10.6.0.127:54319       192.168.2.40:5061      ESTABLISHED

但我终于放弃了 cmd.exe 作为脚本语言。


您还可以在 Powershell 中使用 get-nettcpconnection 来获取类似的信息:

PS C:\pax> Get-NetTCPConnection
           | format-table -autosize

LocalAddress LocalPort RemoteAddress   RemotePort State       AppliedSetting
------------ --------- -------------   ---------- -----       --------------
::           54122     ::              0          Listen
::           54104     ::              0          Listen
::           49156     ::              0          Listen
::           445       ::              0          Listen
::           135       ::              0          Listen
10.6.0.127   56321     10.4.0.96       445        Established Internet
127.0.0.1    56053     127.0.0.1       8085       TimeWait
127.0.0.1    56052     127.0.0.1       8085       TimeWait
10.6.0.127   56046     192.168.2.13    445        Established Internet
127.0.0.1    56043     127.0.0.1       8085       TimeWait
10.6.0.127   56039     192.168.2.13    49814      Established Internet
10.6.0.127   56038     192.168.2.13    135        TimeWait
10.6.0.127   56035     216.58.220.142  443        Established Internet
: : :

Powershell 方式是首选,至少像我这样的聪明人是这样 :-) 因为它具有过滤和修改数据的所有这些奇妙功能:

PS C:\pax> get-nettcpconnection
           | where-object {$_.State -eq 'Established'}
           | select-object 'LocalPort'
           | sort-object 'LocalPort'
           | format-table -autosize

LocalPort
---------
    23560
    49735
    49736
    54140
    54145
    54259
    54263
    : : :

任何更复杂的处理(如查找 10,000 个连续连接)都可以在 PS1 脚本中完成,类​​似于过去对 CMD 文件的处理方式。