我需要检查客户端是否可以通过特定 TCP 端口连接到服务器。服务器正在监听该端口。尝试了“telnet server_IP port”,但当我看到它已连接到服务器时,telnet 卡住了。似乎 telnet 正在等待服务器的特定回复。
我需要的只是检查我是否可以从这个工作站连接到服务器。有什么办法吗?我更喜欢 telnet 之类的 Windows 工具或其他东西。
编辑:主要目标是检查特定工作站是否可以通过此端口访问服务器。它是诊断工具的一部分。此工具是从服务器运行的简单脚本,用于诊断此客户端/服务器系统的不同方面。它获取工作站名称并检查是否可以从此工作站连接到服务器。我想通过标准工具(如 telnet 或 Microsoft 的其他任何工具)检查连接性,最好它应该已安装在工作站上。我计划通过工作站上的 Sysinternals 中的 psexec 运行它并在服务器上接收结果。
答案1
尝试端口查询,Microsoft 命令行端口扫描器。这将告诉您可以从系统连接到哪些端口
答案2
如果telnet hostname port
结果为空白屏幕,且左上角有光标,则表示您已连接。
无需其他工具。
答案3
以下是我想出的 VBScript TCP Ping 解决方案,使用 MSXML2 ServerXMLHTTP 控件来测试与端口的 TCP 连接。它应该可以在大多数系统上运行,无需任何额外下载。
address = "www.example.com"
WScript.Echo "http: " & TCPPing( address, 80)
WScript.Echo "ssh: " & TCPPing( address, 22)
WScript.Echo "smb: " & TCPPing( address, 139)
WScript.Echo "https: " & TCPPing( address, 443)
Function TCPPing( address, port )
Set xhr = WScript.CreateObject("MSXML2.ServerXMLHTTP")
xhr.SetTimeouts 8000,8000,8000,8000
On Error Resume Next
xhr.Open "GET", "http://" & address & ":" & port, False
xhr.Send
Select Case Err.Number
' ok, tcp connect but no web response, 401 auth failure
Case 0, -2147012744, -2147024891
msg = "OK"
Case -2147012867
msg = "Connection Rejected"
Case -2147012894
msg = "Timed out"
Case -2147012889
msg = "Could not resolve address"
Case -2147467259
msg = "Cannot test that port with this tool"
Case Else
msg = "Unknown error " & Err.Number
End Select
On Error Goto 0
Set xhr = Nothing
TCPPing = msg
End Function
答案4
如果您正在测试防火墙阻止端口,则不要使用自定义应用程序,而是在相关端口上的服务器计算机上运行 netcat,然后从客户端连接到它,netcat 将让您看到结果。这将告诉您端口是否被阻止,而不会引入有关应用程序功能的变量。