上文接 Android 手机通过 Wi-Fi 进行数据传输 (一)
本文参照自:
[Android 连接 Wi-Fi 和创建 Wi-Fi 热点 demo]
以下是源码文件
原文件 Constant.java
- package edu.cdut.robin;
- public class Constant {
- public final static String END="end";
- public final static String HOST_SPOT_SSID="HotSpotRobin";
- public final static String HOST_SPOT_PASS_WORD="123456789";
- }
源码文件 1
QuickTransferActivity.java 文件
- package edu.cdut.robin;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.NET.InetAddress;
- import java.NET.ServerSocket;
- import java.NET.Socket;
- import java.NET.UnknownHostException;
- import edu.cdut.robin.hotspot.WifiAdmin;
- import edu.cdut.robin.hotspot.WifiApAdmin;
- import Android.App.Activity;
- import Android.content.BroadcastReceiver;
- import Android.content.Context;
- import Android.content.Intent;
- import Android.content.IntentFilter;
- import Android.NET.DhcpInfo;
- import Android.NET.Wi-Fi.WifiInfo;
- import Android.NET.Wi-Fi.WifiManager;
- import Android.os.Bundle;
- import Android.os.Handler;
- import Android.util.Log;
- import Android.view.View;
- import Android.widget.Button;
- import Android.widget.TextView;
- publicclassQuickTransferActivityextendsActivityimplementsDisplayMesage,ITransferResult{
- /** Called when the activity is first created. */
- TextView content;
- Button mBtn3, mBtn4;
- WifiAdmin mWifiAdmin;
- WifiApAdmin wifiAp;
- Context context;
- finalstaticString TAG ="robin";
- @Override
- publicvoid onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- content =(TextView)this.findViewById(R.id.content);
- mBtn3 =(Button) findViewById(R.id.button3);
- mBtn4 =(Button) findViewById(R.id.button4);
- mBtn3.setText("点击连接 Wifi");
- mBtn4.setText("点击创建 Wifi 热点");
- context =this;
- mBtn3.setOnClickListener(newButton.OnClickListener(){
- @Override
- publicvoid onClick(View v){
- // TODO Auto-generated method stub
- mWifiAdmin =newWifiAdmin(context){
- @Override
- publicvoid myUnregisterReceiver(BroadcastReceiver receiver){
- // TODO Auto-generated method stub
- unregisterReceiver(receiver);
- }
- @Override
- publicIntent myRegisterReceiver(BroadcastReceiver receiver,IntentFilter filter){
- // TODO Auto-generated method stub
- registerReceiver(receiver, filter);
- return null;
- }
- @Override
- publicvoid onNotifyWifiConnected(){
- // TODO Auto-generated method stub
- Log.v(TAG, "have connected success!");
- Log.v(TAG, "###############################");
- }
- @Override
- publicvoid onNotifyWifiConnectFailed(){
- // TODO Auto-generated method stub
- Log.v(TAG, "have connected failed!");
- Log.v(TAG, "###############################");
- }
- };
- mWifiAdmin.openWifi();
- mWifiAdmin.addNetwork(mWifiAdmin.createWifiInfo(Constant.HOST_SPOT_SSID,Constant.HOST_SPOT_PASS_WORD,
- WifiAdmin.TYPE_WPA));
- }
- });
- mBtn4.setOnClickListener(newButton.OnClickListener(){
- @Override
- publicvoid onClick(View v){
- // TODO Auto-generated method stub
- wifiAp =newWifiApAdmin(context);
- wifiAp.startWifiAp(Constant.HOST_SPOT_SSID,Constant.HOST_SPOT_PASS_WORD);
- }
- });
- }
- publicvoid onClick(View view){
- if(view.getId()== R.id.button1){
- WifiManager wifiManage =(WifiManager) getSystemService(Context.WIFI_SERVICE);
- DhcpInfo info = wifiManage.getDhcpInfo();
- WifiInfo wifiinfo = wifiManage.getConnectionInfo();
- String ip = intToIp(wifiinfo.getIpAddress());
- String serverAddress = intToIp(info.serverAddress);
- newSender(serverAddress,this,this).start();
- Log.w("robin","ip:"+ ip +"serverAddress:"+ serverAddress + info);
- }elseif(view.getId()== R.id.button2){
- Receiver service =newReceiver(this,this);
- service.start();
- }
- }
- Handler handler =newHandler();
- StringBuffer strBuffer =newStringBuffer();
- publicvoid displayMesage(finalString msg){
- Runnable r =newRunnable(){
- publicvoid run(){
- // TODO Auto-generated method stub
- if (strBuffer.length()> 1024) {
- strBuffer.delete(0, 100);
- }
- strBuffer.append(msg + "\n");
- content.setText(strBuffer.toString());
- content.invalidate();
- }
- };
- handler.post(r);
- }
- // 将获取的 int 转为真正的 ip 地址, 参考的网上的, 修改了下
- privateString intToIp(int i){
- return(i &0xFF)+"."+((i>>8)&0xFF)+"."+((i>>16)&0xFF)+"."+((i>>24)&0xFF);
- }
- @Override
- publicvoid appendMesage(String msg){
- displayMesage(msg);
- }
- @Override
- publicvoid onResult(int result,long size){
- if(wifiAp !=null){
- wifiAp.closeWifiAp(context);
- }
- // TODO Auto-generated method stub
- closeWifi();
- Runnable r = new Runnable() {
- @Override
- publicvoid run(){
- // TODO Auto-generated method stub
- displayMesage("try to open wifi");
- openWifi();
- displayMesage("open wifi end");
- }
- };
- handler.postDelayed(r,30*1000);
- }
- WifiManager mWifiManager;
- // 打开 Wi-Fi
- public void openWifi() {
- if(mWifiAdmin!=null){
- mWifiAdmin.openWifi();
- return;
- }
- if (mWifiManager == null) {
- mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- }
- if (!mWifiManager.isWifiEnabled()) {
- mWifiManager.setWifiEnabled(true);
- }
- }
- // 关闭 Wi-Fi
- public void closeWifi() {
- if(mWifiAdmin!=null){
- mWifiAdmin.closeWifi();
- return;
- }
- if (mWifiManager == null) {
- mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- }
- if (mWifiManager.isWifiEnabled()) {
- mWifiManager.setWifiEnabled(false);
- }
- }
- }
- interfaceDisplayMesage{
- void displayMesage(String msg);
- void appendMesage(String msg);
- }
- interfaceITransferResult{
- void onResult(int result,long size);
- }
- classReceiverextendsThread{
- privatestaticBufferedReaderin;
- DisplayMesage console;
- ITransferResult transferResult;
- Receiver(DisplayMesage console,ITransferResult transferResult){
- super();
- this.console = console;
- this.transferResult = transferResult;
- }
- publicvoid run(){
- try{
- ServerSocket socketService =newServerSocket(3358);
- Log.i("robin","waiting a connection from the client"+ socketService);
- Socket sock = socketService.accept();
- String hostAddress = sock.getLocalAddress().getHostAddress();
- String inetAddress = sock.getInetAddress().getHostAddress();
- Log.w("robin","local:"+ hostAddress +"| inetAddress"+ inetAddress +"|"+ sock.getRemoteSocketAddress());
- Log.w("robin","local name:"+ sock.getLocalAddress().getHostName()+"| inetAddress"
- + sock.getInetAddress().getHostName()+"|"+InetAddress.getLocalHost().getHostAddress());
- in=newBufferedReader(newInputStreamReader(sock.getInputStream()));
- String line;
- boolean flag =true;
- long count =0;
- long time =System.currentTimeMillis();
- do{
- line =in.readLine();
- if(flag){
- console.displayMesage("Recevie:"+ line);
- flag =false;
- }
- count = count + line.length();
- if(count %1024==0){
- console.displayMesage("Recevied:"+((count <<1)>>10)+"kB data");
- }
- }while(!Constant.END.equals(line));
- Log.w("robin","you input is :"+ line);
- long t =System.currentTimeMillis()- time;
- if(t ==0)
- t =1;
- count = count <<1;
- long rate =((count / t)*1000)/1024;
- count = count>>10;
- console.displayMesage("Recevied:"+ count +"kB data"+"in"+ t +"ms"+"at rate:"+ rate
- +"kB/second");
- Log.i("robin","exit the app");
- sock.close();
- socketService.close();
- transferResult.onResult(1, count);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
- classSenderextendsThread{
- DisplayMesage console;
- String serverIp;
- ITransferResult transferResult;
- Sender(String serverAddress,DisplayMesage console,ITransferResult transferResult){
- super();
- serverIp = serverAddress;
- this.console = console;
- this.transferResult = transferResult;
- }
- publicvoid run(){
- Socket sock =null;
- PrintWriterout;
- try{
- // 声明 sock, 其中参数为服务端的 IP 地址与自定义端口
- sock = new Socket(serverIp, 3358);
- Log.w("robin", "I am try to writer" + sock);
- } catch (UnknownHostException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- char data[] = new char[1024 * 10];
- for (int i = 0; i <data.length; i++) {
- data[i] = (char) i;
- }
- try {
- if (sock != null) {
- // 声明输出流 out, 向服务端输出 "Output Message!!"
- final String msg = "Hello,this is robin!!";
- Log.w("robin", "try to writer");
- out = new PrintWriter(sock.getOutputStream(), true);
- StringBuffer strBuffer = new StringBuffer();
- strBuffer.append(msg);
- String str = msg;
- for (int i = 0; i < 1024; i++) {
- if (i != 0) {
- str = msg + System.currentTimeMillis() + "|";
- out.write(data);
- }
- out.println(str);
- Log.w("robin", str);
- if(i ==0){
- console.displayMesage("send message....");
- }elseif(i %100==0){
- console.displayMesage("send message"+ i +"success!");
- }
- if(strBuffer.length()>1024){
- strBuffer.delete(0, strBuffer.length());
- }
- }
- out.println(Constant.END);
- out.flush();
- }
- transferResult.onResult(1,1);
- }catch(IOException e){
再分享一下我老师大神的人工智能教程吧. 零基础! 通俗易懂! 风趣幽默! 还带黄段子! 希望你也加入到我们人工智能的队伍中来! http://www.captainbed.net/
来源: http://www.bubuko.com/infodetail-2974331.html