有没有办法检查服务器上某个端口是否打开?

Is there a way to check if a certain port is open on server?

就像您 ping 服务器的 IP 来检查它是否正常一样,我们是否也可以检查 运行 服务器上的端口是否 active/open?

这只是我的想法,但你能在你的 ping 陈述中更具体一点吗?

 `ping 127.0.0.1:7004`

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

这取决于您对系统(客户端或服务器)的访问权限,您可以使用两个选项之一,

  1. 服务器端你可以使用netstat -an来检查哪些端口正在监听
  2. 从外部使用 telnet host port,如果它不能在 linux 机器上运行,请尝试 telnet host:port

如果愿意并且能够安装软件,可以使用nmap

nmap -p 7004 127.0.0.1

或者,如果它面向互联网,请使用 http://www.yougetsignal.com/tools/open-ports/

等网络服务

对于 TCP 端口,您可以简单地使用 telnetnc 来建立连接。如果成功,则端口已打开。

但由于 UDP 是无状态的,您无法检查开放端口的简单情况。你必须知道这个端口后面是哪个服务,并且知道如何发送有效的数据包,这样你才能得到答案。

由于大多数公司客户禁用了 telnet,我发现 windows 机器上的 powershell 命令对于 TCP 非常有用: New-Object System.Net.Sockets.TcpClient("server", port)