检查TCP端口是否已连接/建立?

检查TCP端口是否已连接/建立?,tcp,vbscript,Tcp,Vbscript,我要做的是指定几个端口,然后检查它们以查看是否存在已建立的连接。我发现下面的脚本,它运行,但它只列出了3个端口,我不明白为什么。我验证了有问题的端口(以及下面输出中未列出的许多其他端口)存在活动规则 我想我找到了objPort,但我甚至没有看到status属性,所以我认为这是错误的方向。这很有效。但是,我决定使用netstat的-b参数来查找可执行名称中的字符串(在本例中为“vnc”),而不是端口 这是一个监视特定端口的bat文件。不幸的是,您必须以提升的权限从命令提示符运行它 @echo of

我要做的是指定几个端口,然后检查它们以查看是否存在已建立的连接。我发现下面的脚本,它运行,但它只列出了3个端口,我不明白为什么。我验证了有问题的端口(以及下面输出中未列出的许多其他端口)存在活动规则


我想我找到了objPort,但我甚至没有看到status属性,所以我认为这是错误的方向。

这很有效。但是,我决定使用
netstat
-b
参数来查找可执行名称中的字符串(在本例中为“vnc”),而不是端口

这是一个监视特定端口的bat文件。不幸的是,您必须以提升的权限从命令提示符运行它

@echo off
SET "strPort=1972"
:LOOP
cls
netStat -n | find ":%strPort%"
ping -n 5 127.0.0.1 > nul
GOTO LOOP

试试看,我熟悉netstat,但是没有做一些主要的修改,这并不是一个真正的解决方案。除非有一个未记录的功能只列出某些端口?其余端口将不会打开,可能是因为Windows Firewall不会
telnet.exe
也做你想做的事情而不需要COM对象?应该能够从
WScript.Shell
中回调
StdOut
,以获取端口是否响应的反馈。请注意,我不想检查端口是否打开,我想检查连接。我能用telnet来确定吗?它如何告诉你确切的端口?您已经提出了一个与问题中的要求不同的解决方案。我将更新以向未来的读者解释这两个选项。我阅读了您的答案,因为您的问题没有解释您为什么需要检查某些端口是否已建立连接,所以此答案毫无意义。因此,它不是您想要的端口,而是应用程序,它仍然不能告诉您哪个端口与该程序有连接,尽管您应该能够使用相同的技术获得连接。
strCommand = "cmd /C ""netStat -n -b | find ""vnc"""""
Set StdOut = WScript.StdOut
Set objShell = CreateObject("WScript.Shell")
found = 0
wscript.echo "Waiting for connection..."

Do Until found = 1
    set objScriptExec = objShell.Exec (strCommand)

    strResults = LCase(objScriptExec.StdOut.ReadAll)

    if len (strResults) > 0 then
        MsgBox "Found VNC connection!"
        found = 1
    else
        WScript.Sleep(5000)
    End if
Loop
@echo off
SET "strPort=1972"
:LOOP
cls
netStat -n | find ":%strPort%"
ping -n 5 127.0.0.1 > nul
GOTO LOOP