关于Android wifi通信笔记

来源:互联网 发布:夏威夷旅行社 知乎 编辑:程序博客网 时间:2024/06/01 17:18
wifi所需权限,同样放于application外
<!-- wifi -->
    <uses-permission android:name="android.permission.INTERNET" ></uses-permission>   允许打开网络套接字
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>   //允许访问关闭wifi
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>     //允许改变wifi状态
    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>        //允许使用电源锁定管理以使进程休眠或屏幕变暗
    <uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>   //允许程序重新启动其他程序
    
**********************************************************************************************************************************
首先得了解异步任务:
类继承extends AsyncTask<Void, Void, Void>
对象调用execute()开启异步任务

结构:
execute  执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。
onPreExecute   在execute被调用后立即执行,一般用来在执行后台任务前对UI做一些标记
doInBackground  在onPreExecute完成后立即执行,用于执行较为费时的操作,此方法将接收输入参数和返回计算结果。
                在执行过程中可以调用publishProgress来更新进度信息。
onProgressUpdate   在调用publishProgress时,此方法被执行,直接将进度信息更新到UI组件上。
onPostExecute    当后台操作结束时,此方法将会被调用,计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上

代码:
/*构造方法*/
    public ContTask()
    {
        
    }
    
    /*子线程任务*/
    public Void doInBackground(Void... params)
    {
        publishProgress();   //启动更新界面任务
        return null;
    }
    
    /*更新界面任务*/
    public void onProgressUpdate(Void... values)
    {
        
    }
    
**********************************************************************************************************************************
关闭异步取消连接
if (connectTask != null && connectTask.getStatus() == AsyncTask.Status.RUNNING) {      //connectTask为异步对象
                
                        // 如果Task还在运行,则先取消它
                        connectTask.cancel(true);
                        try {
                            connectTask.getmSocket().close();   //关闭套接字
                        }
                        catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    
**********************************************************************************************************************************
连接wifi协议
Socket mSocket = new Socket();   //实例化socket
SocketAddress mSocketAddress = new InetSocketAddress(Constant.IP, Constant.port);    //传入ip端口获取网络套接字
mSocket.connect(mSocketAddress, 3000);   //连接wifi协议

此时可通过:
mSocket.getInputStream();// 得到输入流
mSocket.getOutputStream();// 得到输出流

**********************************************************************************************************************************
写命令
输出流.write(命令);// 写命令  byte类型

输出流.flush();// 发送并清空内存流

**********************************************************************************************************************************
读取命令
byte[] str = new byte[len];
输入流.read(str);

**********************************************************************************************************************************
写文件:
public  static String file ;    //文件存储目录和名字
file = Environment.getExternalStorageDirectory().getCanonicalPath()+"/"+"ywd.txt";    //指定路径要创建文件为ywd.txt

FileOutputStream  fileoutput = new FileOutputStream(file,true);   //创建文件,true设置为可追加
String st = "你好:";
fileoutput.write(st.getBytes());   //写入
fileoutput.flush();  //刷新文件

**********************************************************************************************************************************
读文件:
FileIntputStream fileintput = new FileInputStream(file);  //打开

/*读取*/
byte[] temp = new byte[1024];
StringBuilder sb = new StringBuilder("");
int len = 0;
while((len=fileintput.read(temp)) >0)
{
    sb.append(new String(temp,0,len));
}

1 0
原创粉丝点击