WiFi和热点开发——tcp连接查看实时日志

本文介绍了如何通过连接Android设备的WiFi热点,在手机上实时查看设备的日志,避免了使用USB线和笔记本电脑,简化了现场问题定位的过程。服务端通过线程池处理多个客户端请求,客户端则通过持续读取服务端数据并更新UI实现日志显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人从事多年的Android智能设备开发,做过手机、MiFi、智能门锁等产品,除了手机之外,其他的产品在后期的维护及版本迭代过程中,经常需要通过分析查看设备的日志来定位问题,比如智能门锁,遇到故障时,经常就抱着一台笔记本,打开设备的usb调试开关后,用usb线连接设备进行问题重现和日志分析。当然,获取日志的方式是多种多样的,也可以通过网络上传。但总免不了需要现场查看,现场查看就有个问题,笔记本并不是随身携带,而手机确实随身携带的,因此,能不能在手机端实时查看设备的日志呢?答案是肯定的。
MiFi和智能门锁都开放了热点,因此,调试的手机可以连接到设备的热点,进行组网后实现实时日志查看。这种方式既不需要数据线,也不需要笔记本,甚至usb调试开关也不用开启。
先说服务端(设备端),注意这里用到了线程池,因此服务端是具备了一对多进行响应的基础能力的:

    /**
     * @作用 开启tcp服务
     */
    public void startTCP() {
        if (runnableTcp != null) {
            isStart = false;
            runnableTcp = null;
        }
        try {
            runnableTcp = new TcpReceive();
            threadTcp = new Thread(runnableTcp);
            isStart = true;
            threadTcp.start();
        } catch (Exception e) {
            logd("开启TCP失败:" + e.getMessage());
        }

        try {
            mExe = Executors.newCachedThreadPool();// 创建一个线程池
        } catch (Exception e) {
            logd("创建线程池失败:" + e);
        }
    }

    private class TcpReceive implements Runnable {
   
        Socket socket = null;
        ServerSocket server = null;

        public void run() {
            try {
                //server = new ServerSocket(53858);
                if (server == null) {
                    server = new ServerSocket();
                    server.setReuseAddress(true);
                    server.bind(new InetSocketAddress(53858));
                }
                allSockets = new HashSet<Socket>();
                while (isRunning) {
                    if (!server.isClosed()) {
                        //logd("serverSocket "+server.hashCode()+" 监听53858端口中...");
                        socket = server.accept();
                    }
                    if (socket != null) {
                        allSockets.add(socket);
                        //logd("新的socket " + socket.hashCode() + " 加入,当前socket总数为:" + allSockets.size());
                        mExe.execute(new EchoThread(socket));
                    }

       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值