[問題] DataGramSocket 不會丟 PortUnreachableException

看板java作者 (OoOoOo)時間16年前 (2008/03/05 15:55), 編輯推噓4(403)
留言7則, 4人參與, 最新討論串1/1
我想寫程式檢查某個 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

03/05 16:01, , 1F
這是 UDP 本身的特性吧? UDP 不會作確認動作阿...
03/05 16:01, 1F

03/05 16:43, , 2F
沒有 exception 不是好事嗎?XD
03/05 16:43, 2F

03/05 16:48, , 3F
可是api就寫先 connect 後就會丟,之前寫 c socket 也是
03/05 16:48, 3F

03/05 16:51, , 4F
我想從他丟 exception 判斷有沒有開,他不丟就沒辦法了 orz
03/05 16:51, 4F

03/05 17:00, , 5F
ㄜ... 用 TCP 不行嗎?
03/05 17:00, 5F

03/05 17:55, , 6F
這程式目的是測 UDP port 有沒有開,所以TCP 就不能用了orz
03/05 17:55, 6F

03/05 23:40, , 7F
你不就寫過c , 問題就是哪樣而已, java 不會比c勵害
03/05 23:40, 7F
文章代碼(AID): #17pb7eA4 (java)