有没有一种方法可以检查服务器上某个特定端口是否开放?

7

就像您会ping一个IP地址以检查服务器是否在线一样,我们也可以检查正在运行的服务器上的端口是否处于活动/打开状态。

这只是我随口说的,但您能否在ping语句中更具体一些?

 `ping 127.0.0.1:7004`

我知道这个命令是不被允许的,但是在Linux和Windows中有没有办法检查它呢?

4个回答

7

5
这取决于您对系统(客户端或服务器)的访问权限,您可以使用以下两个选项之一:
  1. 在服务器端,您可以使用 netstat -an 命令来检查哪些端口正在侦听。
  2. 从外部使用 telnet host port 命令。如果在 Linux 机器上无法正常工作,请尝试使用 telnet host:port 命令。

不要对非代码文本使用代码格式。 - user207421
@EJP 我只选择了相关的代码,但它占据了整行..即使一开始我也不喜欢它..我认为要么是代码格式有问题,要么是我做错了什么。无论如何,感谢您对其进行格式化.. - Amit
谢谢,我在服务器端,netstat 正好做到了我想要的 :) - kholofelo Maloma

2

由于许多公司禁用了telnet,我发现在Windows机器上使用powershell命令来处理TCP非常有用:

New-Object System.Net.Sockets.TcpClient("服务器名称", 端口号)

谢谢。虽然这个命令要求我知道端口号,但这是我不知道的命令。谢谢。 - kholofelo Maloma
1
是的,不用谢。那是问题的一部分,需要知道端口并检查它是否开放。如果您在服务器端并想要检查 Windows 上的开放端口,则可以使用“资源监视器”> 网络选项卡> 监听端口。 - Michail Gede

0

对于TCP端口,您可以简单地使用telnetnc建立连接。如果成功,端口就是开放的。

但由于UDP是无状态的,您不能仅仅通过检查是否有开放的端口来确定其是否开放。您必须知道该端口背后的服务,并知道如何发送有效的数据包以便获得响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接