Я пробую свой код, и он работает, но только на локальных IP-адресах, в этом моя проблема, я тоже хочу выполнить ping на внешние серверы.
Вот мой код:
privateOnClickListenermilistener=newOnClickListener() { publicvoidonClick(View v) { TextViewinfo= (TextView) findViewById(R.id.info); EditTextedit= (EditText) findViewById(R.id.edit); Editablehost= edit.getText(); InetAddress in; in = null; // Definimos la ip de la cual haremos el ping try { in = InetAddress.getByName(host.toString()); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Definimos un tiempo en el cual ha de responder try { if (in.isReachable(5000)) { info.setText("Responde OK"); } else { info.setText("No responde: Time out"); } } catch (IOException e) { // TODO Auto-generated catch block info.setText(e.toString()); } } };
По теме "Ограничения локальной сети" в нем говорится:
"В зависимости от среды эмулятор может быть не в состоянии поддерживать другие протоколы (например, ICMP, используемый для "ping"), возможно, не поддерживаются. В настоящее время эмулятор не поддерживает IGMP или многоадресную рассылку".
это известное ограничение сетевого стека пользовательского режима QEMU. Цитирую из оригинального документа: Обратите внимание, что ping ненадежно поддерживается в Интернете, поскольку для этого требуются права root. Это означает, что вы можете пропинговать только локальный маршрутизатор (10.0.2.2).