0

我已经下载了 SNMP4J 并将其添加到我的项目的构建路径中。然后我从http://shivasoft.in/blog/java/snmp/create-snmp-client-in-java-using-snmp4j/http://shivasoft.in/blog/java/snmp/creating添加了一些代码-snmp-agent-server-in-java-using-snmp4j/检查我的代理。但是现在这些字符串打印在控制台中:

Exception in thread "main" java.lang.RuntimeException: java.net.BindException: Address already in use: Cannot bind
    at org.snmp4j.transport.TransportMappings.createTransportMapping(TransportMappings.java:123)
    at org.bihe.SNMPAgent.initTransportMappings(SNMPAgent.java:145)
    at org.snmp4j.agent.BaseAgent.init(BaseAgent.java:144)
    at org.bihe.SNMPAgent.start(SNMPAgent.java:157)
    at org.bihe.TestSNMPAgent.init(TestSNMPAgent.java:35)
    at org.bihe.TestSNMPAgent.main(TestSNMPAgent.java:13)
Caused by: java.net.BindException: Address already in use: Cannot bind
    at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method)
    at java.net.DualStackPlainDatagramSocketImpl.bind0(Unknown Source)
    at java.net.AbstractPlainDatagramSocketImpl.bind(Unknown Source)
    at java.net.DatagramSocket.bind(Unknown Source)
    at java.net.DatagramSocket.<init>(Unknown Source)
    at java.net.DatagramSocket.<init>(Unknown Source)
    at org.snmp4j.transport.DefaultUdpTransportMapping.<init>(DefaultUdpTransportMapping.java:100)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.snmp4j.transport.TransportMappings.createTransportMapping(TransportMappings.java:104)
    ... 5 more

我在 mediafire 中上传了我的洞项目: https ://www.mediafire.com/?lcyap63rs93qdwo 谁能解释一下,为什么程序会抛出这些异常?我以前没有使用过 snmp,这是我第一次在网络课程中进行研究。

4

2 回答 2

1

您正在尝试侦听已被其他进程使用的本地 IP 和端口(例如操作系统 - 如果您使用端口 161,这很可能)。

尝试使用不同的端口(或 IP 地址 - 但大多数服务侦听所有本地 IP 地址)或停止使用它的进程。

于 2014-02-02T09:49:10.783 回答
1

正如 ooSNMP 所指出的,某些进程已经在使用该端口。使用不同的端口或停止进程。

Windows:可能有一个服务:SNMPT Trap自动侦听陷阱。如果您在 Windows 上,这可能是问题所在。这可以通过转到服务并停止服务来解决。确保将服务设置为“手动”,否则它最终会自行重启(通过右键单击服务,选择Properties并更改Startup Type来完成。

Linux :您可以使用ss命令找出哪个应用程序正在使用该端口。kill您可以使用命令终止该进程。

于 2017-12-07T00:51:45.490 回答