当前位置: 首页 > 面试题库 >

如何从Java Android Ping外部IP

欧阳俊逸
2023-03-14
问题内容

正在为Android 2.2开发Ping应用程序

我尝试了我的代码,它可以工作,但是仅在本地IP中,这也是我想对外部服务器执行ping操作的问题。

这是我的代码:

  private OnClickListener milistener = new OnClickListener() {
    public void onClick(View v) {
        TextView info = (TextView) findViewById(R.id.info);
        EditText edit = (EditText) findViewById(R.id.edit);
        Editable host = 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());
        }
    }
};

Ping 127.0.0.1-> OK
Ping 8.8.8.8(Google DNS)->超时

我也将以下行放在清单XML中:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

谁能告诉我我做错了什么?


问题答案:

获取ip命中的布尔值

public Boolean getInetAddressByName(String name)
    {
        AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>()
        {

            @Override
            protected Boolean doInBackground(String... params) {
                try
                {
                    return InetAddress.getByName(params[0]).isReachable(2000);
                }
                catch (Exception e)
                {
                    return null;
                }
            }
        };
        try {
            return task.execute(name).get();
        }
        catch (InterruptedException e) {
            return null;
        }
        catch (ExecutionException e) {
            return null;
        }

    }


 类似资料:
  • 问题内容: 我正在尝试学习JavaFX,并将swing应用程序转换为JavaFX。我想做的是使用JavaFX来显示程序的进度。 我以前在Swing中所做的是首先使用自定义JComponent创建一个JFrame。然后让我的主程序调用自定义JComponent的方法,该方法将更改JComponent和repaint()中的形状颜色。 下面给出了我想在JavaFX中实现的目标的想法: 我目前将此作为我

  • 问题内容: 我是Swift的新手,我没有发现任何有关使用Swing语言执行外部程序或访问外部进程的信息。 在语言开发的当前阶段是否可以做,还是应该改用Objective-C? 也许我的Swift程序中可以使用一些Objective-C库? 谢谢。 问题答案: 您可以使用运行外部程序。例如,从Circle和Square:

  • 问题内容: 我想将一些hibernate配置放在属性文件中,以使其无需构建和部署就可编辑。 我尝试按照不带persistence.xml配置文件的Create JPAEntityManager中的说明解决问题 app.properties: persistence.xml 在初始化代码中,应用程序执行以下序列(查找属性), 但失败并显示错误消息: 有人知道我的配置可能出什么问题吗? 版本:JBos

  • 问题内容: 我正在使用webpack来管理我的React应用程序。现在,我想从此URL导入依赖项: 传统上,我只是将上述代码放在index.html文件中。但是现在如何让webpack加载此网址?以及我的React JS如何使用该依赖关系? 当我启动webpack-dev-server时,将出现以下错误: 然后,我使用一点加载程序来加载URL。以下是使用加载程序的JavaScript代码: 但是启

  • 问题内容: 是否可以从Java内部类中获取对它的引用? 即 问题答案: 您可以像这样访问外部类的实例:

  • 问题内容: 我正在开发非OSGI应用程序,我需要更新骆驼路线中使用的某些属性的值(已加载BridgePropertyPlaceHolder)。所以我认为: 要使用酷炫的管理控制台Hawtio,以便使用JMX更新骆驼 创建一个将更新属性..的JMX MBean。 我成功创建了MBean操作并使用JMX对其进行了调用,但是我不知道如何更新依赖于这些属性的骆驼路线。 有没有一种方法可以从外部更新骆驼上下