给定程序使用哪个端口?

时间:2020-03-06 14:27:45  来源:igfitidea点击:

我希望能够弄清楚特定程序正在使用哪个端口。是否有任何在线可用程序或者Windows附带的程​​序可以告诉我哪些进程正在使用计算机上的哪些端口?

PS,因为我们不是编程问题而对此进行下调之前,我正在寻找可以测试一些网络代码的程序。

解决方案

大多数体面的防火墙程序都应允许我们访问此信息。我知道Agnitum OutpostPro防火墙可以。

在命令行中,netstat -a将为我们提供许多信息。

Windows附带了netstat实用程序,该实用程序可以完全满足要求。

netstat -b -a列出了正在使用的端口,并为我们提供了使用每个端口的可执行文件。我相信我们需要属于管理员组才能执行此操作,并且我不知道Vista会对安全产生什么影响。

我通常也添加-n使其更快一些,但是添加-b会使它相当慢。

编辑:如果我们需要除netstat提供的更多功能,vasac建议我们尝试使用TCPView。

我们可以为此使用" netstat"命令。这里有做这种事情的描述。

TCPView可以满足要求。

我经常使用" netstat -natp"。

如果我们更喜欢GUI界面,则CurrPorts是免费的,并且可用于所有版本的Windows。显示端口及其打开的过程。

Open Ports Scanner对我有用。

我们可能已经安装了Process Explorer(来自Sysinternals,现在是Microsoft的一部分)。如果没有,请立即安装它-真是太酷了。

在"进程资源管理器"中:找到有问题的进程,右键单击并选择" TCP / IP"选项卡。对于每个套接字,它甚至还会向我们显示一个堆栈跟踪,该跟踪代表打开该套接字的代码。

在Vista上,我们确实需要提升的特权才能在netstat中使用-b选项。要解决此问题,我们可以运行" netstat -ano",该命令将显示所有打开的端口以及关联的进程ID。然后,我们可以使用任务列表查找哪个进程具有相应的ID。

C:\>netstat -ano

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  ...
  TCP    [::]:49335             [::]:0                 LISTENING       1056
  ...

C:\>tasklist /fi "pid eq 1056"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
sqlservr.exe                  1056 Services                   0     66,192 K