在Android中我们使用Socket类,即“套接字”就可以进行wifi通信。由于其相关说明对程序开发没有多大帮助,故不再赘述,无论什么通信,我们只需要知道最基本的开、关、读、写四大操作就可以完成大部分功能,再使用其进行通讯需要目标的IP地址及端口号即可,假设说按一个按键来控制发送一个指令的话,直接来看代码:
Button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
//在子进程中完成数据的获取,在主进程中完成UI更新
new Thread(new Runnable(){//开启一个线程
@Override
public void run(){
try{
Socket TestSocket = new Socket();//new一个socket
TestSocket.connect(new InetSocketAddress("192.168.4.1", 8080), 8000);//三个参数分别是IP、端口、超时
OutputStream TestOS = TestSocket.getOutputStream();//输出流,即写操作
InputStream TestIS = TestSocket.getInputStream();//输入流,即读操作
byte send_buffer[] = {40};//输出字符数组
byte rec_buffer[] = new char[10];//输入字符数组
TestOS.write(buffer);//这样字符组就发送出去了
/*
String str="Sopen_led1E";
byte[] strbyte = str.getBytes();
TestOS.write(strbyte);//这样字符就发送了
//也可以这样定一个S的开头和E的结尾做简单协议判断,接收端就可以获取相应的数据了
*/
for(int i = 0; i < 10; i++){
rec_buffer[i] = TestIS.read();//read()方法是一个字符一个字符接收
}
//关闭所有流及socket
TestOS.close();
TestIS.close();
TestSocket.close();
//接下去可对收到的数据进行操作
}
catch(Exception e){
//可以打印错误日志啥的
}
}
}).start();
}
});
小结
通信过程就是建立一个Socket,调用connect()方法(开),通过输入输出流(读写)传递数据,最后关闭流和Socket(关)即可。