我想檢查一個端口是打開的還是服務器正在運行。
我已經嘗試了多種方式,像「/系統/斌/平」和「InetAdress」,但如果即時通訊的權利我不能ping通這些指定的端口:/檢查Android/Java上的端口是否打開
這一次我與使它想法DatagramSockets這樣的:
try { String messageStr="Hello!";
int server_port = 25565;
DatagramSocket s = new DatagramSocket();
InetAddress local = InetAddress.getByName("11.11.11.11");
int msg_length=messageStr.length();
byte[] message = messageStr.getBytes();
DatagramPacket p = new DatagramPacket(message, msg_length,local,server_port);
textView1.setText("Inet");
s.send(p);
textView1.setText("Send");
} catch (Exception e) {}
我得到的「Inet」,但沒有「發送」消息,所以我卡住發送。我試圖得到異常消息,它是NetworkOnMainThreadException ..
請說明:您的意思是,如果端口在本地機器上或遠程機器上打開? –
沒錯,我想從一個android手機檢查服務器端口是否打開。 – Caddaile
儘管與問題沒有真正相關性(它可能會導致有效答案發生問題,但在UI訪問衝突時發生崩潰),但不能在線程中使用'textView1.setText(...)'。 UI對象只能由創建它們的線程訪問,而線程始終是主線程。你將不得不使用'runOnUiThread'並傳遞一個'Runnable'給它,並在它的'run()'方法覆蓋執行你的UI代碼 – Tseng