我创建了一个SNMP代理模拟器应用程序,它使用端口号161来模拟设备。有时会出现端口已在使用的异常。如何知道161端口是否忙碌?
只需启动您的应用程序。如果出现BindException异常,则表示端口已被占用。如果没有异常,则可以运行您的应用程序。提前知道这一点并不能为您带来任何帮助。
例如,netstat -s [PORT_NO]
netstat -s 161
仅作补充说明。我认为您可能被禁止使用低端口号(如果不是根用户,则为安全策略)-尝试使用更高的数字,例如10161。
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。在你的情况下,可能是另一个进程。
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