Java 端口已在使用的SNMP错误
我已经创建了一个SNMP代理模拟器应用程序,它使用端口号161来模拟设备。有时会出现端口alredy in use异常。如何知道161端口是否繁忙 使用netstat命令 具体来说, netstat-s[端口号] 比如说, netstat-s161Java 端口已在使用的SNMP错误,java,port,snmp,Java,Port,Snmp,我已经创建了一个SNMP代理模拟器应用程序,它使用端口号161来模拟设备。有时会出现端口alredy in use异常。如何知道161端口是否繁忙 使用netstat命令 具体来说, netstat-s[端口号] 比如说, netstat-s161 只需启动应用程序。如果收到BindException,则表示该端口正在使用中。如果没有,应用程序可以运行。提前知道这一点并不能给你带来任何好处。在Windows上,你可以使用netstat和tasklist。比如说, netstat -aon |
只需启动应用程序。如果收到BindException,则表示该端口正在使用中。如果没有,应用程序可以运行。提前知道这一点并不能给你带来任何好处。在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 /fi "PID eq 1620"
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
snmp.exe 1620 Services 0 1,172 K
在我的例子中,显然是Windows SNMP服务使用端口161。在您的情况下,这可能是另一个过程。只是补充说明。我认为您可能被禁止使用较低的端口号(如果不是根用户,则使用安全策略)-请尝试使用较高的端口号,即10161。下面的语句适合我
1)ps -efww | grep 161
2)netstat -anp | grep 161
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
这并不总是正确的。由于多种原因,端口绑定可能不成功,不仅仅是因为端口已在使用中。要确定出了什么问题,请检查java BindException中的错误消息,或C/C++应用程序中的errno值(在bind调用之后)。