思路回顾
【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 &#