作者ccpz (OoOoOo)
看板java
標題[問題] DataGramSocket 不會丟 PortUnreachableException
時間Wed Mar 5 15:55:17 2008
我想寫程式檢查某個 UDP port 有沒有開
J2SE 6 的文件說用先呼叫 connect 後就會丟 PortUnreachable
程式片段如下
try{
DatagramSocket udp=new DatagramSocket();
DatagramPacket packet=new DatagramPacket(data,data.length);
udp.setSoTimeout(to);
udp.connect(ip,port);
udp.send(packet);
udp.close();
}catch(Exception e)
{
e.printStackTrace();
}
去連一個沒有開啟的 port 時,用 wireshark 看的確有 icmp 回來
但是並沒有 exception 請問是哪裡寫錯嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.242.140
1F:推 PsMonkey:這是 UDP 本身的特性吧? UDP 不會作確認動作阿... 03/05 16:01
2F:推 dreamboxer:沒有 exception 不是好事嗎?XD 03/05 16:43
3F:→ ccpz:可是api就寫先 connect 後就會丟,之前寫 c socket 也是 03/05 16:48
4F:→ ccpz:我想從他丟 exception 判斷有沒有開,他不丟就沒辦法了 orz 03/05 16:51
5F:推 PsMonkey:ㄜ... 用 TCP 不行嗎? 03/05 17:00
6F:→ ccpz:這程式目的是測 UDP port 有沒有開,所以TCP 就不能用了orz 03/05 17:55
7F:推 Lordaeron:你不就寫過c , 問題就是哪樣而已, java 不會比c勵害 03/05 23:40