【Android开发—智能家居系列】(四):UDP通信发送指令

本文详细介绍了在Android平台上实现智能家居控制的UDP通信过程,包括连接WIFI模块、发送搜索无线网指令、接入指定路由及获取IP地址的步骤。通过使用UDP线程类和消息处理Handler,实现实时交互和指令发送。
摘要由CSDN通过智能技术生成

思路回顾

【1】手机连接WIFI模块
【2】UDP通信对WIFI模块发送指令,以和WIFI模块保持连接状态
【3】UDP通信对WIFI模块发送指令,让其搜索可用的无线网,返回WIFI列表
【4】发送指令,让WIFI模块接入指定路由
【5】手机连接路由
【6】发送指令,获得WIFI模块的动态IP地址

UDP通信线程类

package com.jczb.smartlife.common;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

import android.os.Handler;
import android.os.Message;

import com.jczb.smartlife.common.Tool;

public class GetInfoThread extends Thread {
   
    private Handler handler;
    private DatagramSocket socket;
    private int msgType;

    private final String IP = "255.255.255.255";//广播地址
    private int PORT = 26000;

    /**
     * 48899端口:C32x系列的端口,用户可以用AT指令更改
     * 49000端口:除C32x系列,其他WIFI模块的端口
     * 1902端口:有人掌控宝系列产品的端口
     */
    private int targetPort = 49000 ;

    private boolean receive = true;


    /**
     * 
     * @param handler 传入监听此线程的Handler
     * @param intMsg 传入监听的消息类型
     */
    public GetInfoThread(Handler handler,int msgType) {
        this.handler = handler;
        this.msgType=msgType;
        init();
    }

    public void init(){
        try {

            socket = new DatagramSocket(null);
            socket.setBroadcast(true);
            socket.setReuseAddress(true);
            socket.bind(new InetSocketAddress(PORT));
        } catch (SocketException e) {
            e.printStackTrace();
            sendErrorMsg("Search Thread init fail");
            return;
        } 
    }


    public void run() {
        if (socket &#
  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值