Android 网络地址之实现检查主机名的功能

简介: Android 网络地址之实现检查主机名的功能

效果演示:

实现步骤

一、布局页面activity_inet_address.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp"
    tools:context=".InetAddressActivity">
    <EditText
        android:id="@+id/edit_address"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@drawable/edit_style"
        android:text="www.163.com" />
    <Button
        android:id="@+id/btn_hostName_check"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="5dp"
        android:text="检查主机名"
        android:textColor="@color/black"
        android:textSize="20sp" />
    <TextView
        android:id="@+id/tv_desc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="15sp" />
</LinearLayout>

二、InetAddressActivity类,实现根据用户输入的主机名,检查是否可以连接,并且显示主机名,和ip地址,代码中已经给出了详细的注释。

public class InetAddressActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText edit_address;
    private TextView tv_desc;
    private Button btn_hostName_check;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_inet_address);
        edit_address = findViewById(R.id.edit_address);
        tv_desc = findViewById(R.id.tv_desc);
        btn_hostName_check = findViewById(R.id.btn_hostName_check);
        btn_hostName_check.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_hostName_check:
                String hostName = edit_address.getText().toString();
                //开启子线程 检查主机名
                new CheckThread(hostName).start();
                break;
            default:
                break;
        }
    }
    //创建一个检查结果的接收器Handler
    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(@NonNull Message msg) {
            tv_desc.setText("主机检查结果如下:\n" + msg.obj);
            return true;
        }
    });
    private class CheckThread extends Thread {
        private String hostName;
        public CheckThread(@NonNull String name) {
            hostName = name;
        }
        @Override
        public void run() {
            //获得一个默认消息对象
            Message message = Message.obtain();
            try {
                //根据主机名获取主机名称对象
                InetAddress inetAddress = InetAddress.getByName(hostName);
                //检查该主机在规定时间内能否连上
                boolean isReachable = inetAddress.isReachable(5000);
                String desc = (isReachable) ? "可以连接" : "无法连接";
                if (isReachable) {
                    desc = String.format("%s\n主机名为:%s\n主机地址为:%s", desc,
                            inetAddress.getHostName(), inetAddress.getHostAddress());
                    message.what = 0; //消息类型
                    message.obj = desc;//消息描述
                }
            } catch (Exception e) {
                e.printStackTrace();
                message.what = -1; //消息类型
                message.obj = e.getMessage(); //消息描述
            }
            // 向接收处理器发送检查结果消息
            handler.sendMessage(message);
        }
    }
}


目录
相关文章
|
9天前
|
敏捷开发 Java 机器人
云效产品使用常见问题之打包后的Android应用获取下载地址失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6天前
|
移动开发 Java Android开发
构建高效Android应用:采用Kotlin协程优化网络请求
【4月更文挑战第24天】 在移动开发领域,尤其是对于Android平台而言,网络请求是一个不可或缺的功能。然而,随着用户对应用响应速度和稳定性要求的不断提高,传统的异步处理方式如回调地狱和RxJava已逐渐显示出局限性。本文将探讨如何利用Kotlin协程来简化异步代码,提升网络请求的效率和可读性。我们将深入分析协程的原理,并通过一个实际案例展示如何在Android应用中集成和优化网络请求。
|
7天前
|
存储 应用服务中间件 网络安全
Android 网络链接稳定性测试解决方案
Android 网络链接稳定性测试解决方案
17 0
|
8天前
|
Java Android开发
Android Mediatek 应用层重置USB设备功能
Android Mediatek 应用层重置USB设备功能
11 0
|
8天前
|
Android开发
Android Mediatek USB 核心驱动中增加设备 PID/VID 检查
Android Mediatek USB 核心驱动中增加设备 PID/VID 检查
3 0
|
8天前
|
Linux Android开发
Android 内核关闭CAN 串口设备回显功能
Android 内核关闭CAN 串口设备回显功能
8 0
|
11天前
|
网络安全 SDN 网络虚拟化
《计算机网络简易速速上手小册》第8章:软件定义网络(SDN)与网络功能虚拟化(NFV)(2024 最新版)
《计算机网络简易速速上手小册》第8章:软件定义网络(SDN)与网络功能虚拟化(NFV)(2024 最新版)
36 2
|
14天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
11 0
|
14天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
11 0