端口已在使用中的SNMP错误

时间:2012-10-05 05:01:21

标签: java port snmp

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

6 个答案:

答案 0 :(得分:2)

只需启动您的应用程序。如果它获得BindException,则端口正在使用中。如果没有,您的应用程序可以运行。提前知道并没有真正给你买任何东西。

答案 1 :(得分:1)

使用 netstat 命令。

具体来说,

  

netstat -s [PORT_NO]

例如,

  

netstat -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

答案 2 :(得分:1)

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

答案 3 :(得分: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.在您的情况下,它可能是另一个进程。

答案 4 :(得分:0)

1)ps -efww | grep 161   

2)netstat -anp | grep 161

答案 5 :(得分: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