1. 程式人生 > >測試udp服務的埠是否可用

測試udp服務的埠是否可用

telnet ip port 但是如果這個用在upd服務上,就會報錯, 因為telnet走的是tcp協議, 比如說192.168.80.131在8888埠上上啟了個udp的服務,這時使用telnet 192.168.80.131 8888,就會報如下錯誤: Trying 192.168.80.131...
telnet: connect to address 192.168.80.131: Connection refused 此時, 可以使用nc這個工具, 大多數的發行版都自帶這個工具, fedora 9的/usr/bin/nc所屬的安裝包是nc-1.84-16.fc9.i386。 服務端監聽: nc -l -u 192.168.80.129 8001 客戶端: 使用命令nc -u 192.168.80.129 8001, 在這裡輸入字串, 服務端就會回顯相同的字串,表示8001埠上的udp服務是否啟用. suse上的是用netcat, 方法基本上差不多: netcat -l -u -p 8001  這樣就可以在0.0.0.0上偵聽udp的8001埠 從另外一臺機器,或者開啟本機的另外一個虛擬終端, 輸入: netcat -u 192.168.1.123 8001  在這裡輸入字串, 就會回顯一個相同的字串,表示連結是OK的。 探測UDP埠通不通,使用如下引數:
nc -vuz 112.91.151.10 4500 如果通,顯示如下: [112.91.151.10] 500 (isakmp) open
如果埠不通,顯示如下: 112.91.151.10: inverse host lookup failed: 
(UNKNOWN) [112.91.151.10] 4500 (ipsec-nat-t) : Connection refused
但是要注意,如果對端開啟了防火牆,防火牆把包DROP了,那麼是收不到icmp埠不可達訊息的,那麼使用nc命令就會發現實際不通的埠是通的。仔細想想UDP的原理就清楚了,UDP不像TCP一樣需要ACK,所以過一段時間沒收到埠不可達,UDP就認為埠是通的,但是實際上UDP資料被防火牆DROP了。