3

我创建了一个 SNMP 代理模拟器应用程序,它使用端口号 161 来模拟设备。有时会出现端口已经在使用的异常。我怎么知道161端口是否忙?

4

6 回答 6

2

只需启动您的应用程序。如果它得到一个 BindException,则该端口正在使用中。如果没有,您的应用程序可以运行。提前知道这一点并不能真正为你买任何东西。

于 2012-10-05T07:15:43.457 回答
1

通过使用netstat命令。

具体来说,

netstat -s [PORT_NO]

例如,

网络统计 -s 161

  1. http://www.techrepublic.com/blog/security/list-open-ports-and-listening-services/443
  2. http://www.speedguide.net/faq_in_q.php?qid=115
于 2012-10-05T05:06:12.107 回答
1

只是补充说明。我认为您可能被禁止使用低端口号(如果不是 root 用户,则安全策略) - 尝试使用更高的端口号,即 10161。

于 2012-10-06T13:02:57.853 回答
0

在 Windows 上,您可以使用netstattasklist。例如,

netstat -aon | findstr 161

它的输出应该是

C:\Program Files\Microsoft Visual Studio 9.0\VC>netstat -aon |findstr 161
  UDP    0.0.0.0:161            *:*                                    1620
  UDP    [::]:161               *:*                                    1620

然后使用tasklist

tasklist /fi "PID eq 1620"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
snmp.exe                      1620 Services                   0      1,172 K

在我的情况下,显然是 Windows SNMP 服务使用端口 161。在你的情况下,它可能是另一个进程。

于 2012-10-05T09:23:06.697 回答
0
1)ps -efww | grep 161   

2)netstat -anp | grep 161
于 2012-10-05T11:44:54.430 回答
0

以下陈述对我有用。

netstat -lnp

示例用法:

appuser@-app:~$ sudo netstat -lnp |grep 162
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1162/mysqld
udp6       0      0 127.0.0.1:162           :::*                                6830/java
于 2012-12-18T09:13:23.587 回答