端口已在使用中的 SNMP 错误

问题描述 投票:0回答:7

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

java port snmp
7个回答
2
投票

只需开始您的申请。如果它收到 BindException,则该端口正在使用中。如果没有,您的应用程序可以运行。提前知道并不会给你带来任何好处。


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

1
投票

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


0
投票
1)ps -efww | grep 161   

2)netstat -anp | grep 161

0
投票

在 Windows 上,您可以使用

netstat
tasklist
。例如,

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。在您的情况下,它可能是另一个进程。


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

0
投票

作为非常后期的跟进,即使在使用 Net-SNMP v5.9.1 时未使用端口(无法使用其他版本进行测试),我也会收到此错误。

事实证明,如果您指定配置文件,则会失败并显示“地址正在使用”,因此:

# snmptrapd -c /etc/snmp/snmptrapd.conf

失败:

snmptrapd[1089]: couldn't open tcp:192.168.0.2 -- errno 98 ("Address already in use")

但是:

# snmptrapd 

有效。

© www.soinside.com 2019 - 2024. All rights reserved.