我创建了一个 SNMP 代理模拟器应用程序,它使用端口号 161 来模拟设备。有时会出现端口已经在使用的异常。我怎么知道161端口是否忙?
问问题
2204 次
6 回答
2
只需启动您的应用程序。如果它得到一个 BindException,则该端口正在使用中。如果没有,您的应用程序可以运行。提前知道这一点并不能真正为你买任何东西。
于 2012-10-05T07:15:43.457 回答
1
通过使用netstat命令。
具体来说,
netstat -s [PORT_NO]
例如,
网络统计 -s 161
于 2012-10-05T05:06:12.107 回答
1
只是补充说明。我认为您可能被禁止使用低端口号(如果不是 root 用户,则安全策略) - 尝试使用更高的端口号,即 10161。
于 2012-10-06T13:02:57.853 回答
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。在你的情况下,它可能是另一个进程。
于 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 回答