2012-10-05 53 views
3

我已經創建了一個SNMP代理模擬器應用程序,它使用端口號161作爲模擬設備。有時會發生使用中的端口異常。我怎麼知道161端口是否忙?端口已在使用中的SNMP錯誤

回答

2

通過剛開始你的應用程序。如果它得到BindException,則該端口正在使用中。如果沒有,您的應用程序可以運行。知道提前並不會真的給你買東西。

+0

這並非總是如此。端口綁定可能由於許多原因而不成功,不僅因爲端口已被使用。要確定出了什麼問題,請檢查java BindException中的錯誤消息,或C/C++應用程序中的錯誤值(綁定調用後)。 – lucassm

0

在Windows下你可以使用netstattasklist。例如,

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 

在我的情況顯然是誰使用端口161在您的情況的Windows SNMP服務,它可能是另一個過程。

0
1)ps -efww | grep 161 

2)netstat -anp | grep 161 
1

只是額外的說法。我想你可能被禁止使用低端口號(安全策略如果不是root用戶) - 使用更高的數字即10161.

0

下面的語句對我的作品嚐試。

netstat -lnp 

示例用法:

[email protected]:~$ 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 
相關問題