(转自http://www.cnblogs.com/zhxiang/archive/2011/07/21/2112825.html)

客户端程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package com.zx.android; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.content.Context; 
import android.widget.Toast; 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import android.net.wifi.WifiManager; 
import java.net.Socket; 
import com.zx.android.ClientActivity; 
public class ClientActivity extends Activity { 
    /** Called when the activity is first created. */ 
    private Button startButton = null
     private Button stopButton = null
     private Button checkButton = null
     private WifiManager wifiManager = null
     private final String   DEBUG_TAG= "Activity01"
     private TextView   mTextView=null
     private EditText   mEditText=null
     private Button     mButton=null
   
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
        mButton = (Button)findViewById(R.id.Button01); 
        mTextView=(TextView)findViewById(R.id.TextView01); 
        mEditText=(EditText)findViewById(R.id.EditText01); 
      startButton = (Button)findViewById(R.id.startWifi); 
      stopButton = (Button)findViewById(R.id.stopWifi); 
      checkButton = (Button)findViewById(R.id.checkWifi); 
      startButton.setOnClickListener(new StartWifiListener()); 
      stopButton.setOnClickListener(new StopWifiListener()); 
      checkButton.setOnClickListener(new CheckWifiListener()); 
     
    //登陆 
    mButton.setOnClickListener(new OnClickListener() 
    
        public void onClick(View v) 
        
            Socket socket = null
            String message = mEditText.getText().toString() + "/r/n";  
            try  
            {    
                //创建Socket 
                socket = new Socket("192.168.1.102",54321);  
                //向服务器端发送消息 
                PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);       
                out.println(message);  
                   
                //接收来自服务器端的消息 
                BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
                String msg = br.readLine();  
                   
                if ( msg != null
                
                    mTextView.setText(msg); 
                
                else 
                
                    mTextView.setText("数据错误!"); 
                
                //关闭流 
                out.close(); 
                br.close(); 
                //关闭Socket 
                socket.close();  
            
            catch (Exception e)  
            
                // TODO: handle exception 
                Log.e(DEBUG_TAG, e.toString()); 
            
        
    }); 
  class StartWifiListener implements OnClickListener{ 
      public void onClick(View v) { 
       wifiManager = (WifiManager)ClientActivity.this.getSystemService(Context.WIFI_SERVICE); 
       wifiManager.setWifiEnabled(true); 
       System.out.println("wifi state --->" + wifiManager.getWifiState()); 
       Toast.makeText(ClientActivity.this, "当前Wifi网卡状态为" +  
    wifiManager.getWifiState(), Toast.LENGTH_SHORT).show(); 
      
        
  class StopWifiListener implements OnClickListener{ 
      public void onClick(View arg0) { 
       wifiManager = (WifiManager)ClientActivity.this.getSystemService(Context.WIFI_SERVICE); 
       wifiManager.setWifiEnabled(false); 
       System.out.println("wifi state --->" + wifiManager.getWifiState()); 
       Toast.makeText(ClientActivity.this, "当前Wifi网卡状态为" +  
    wifiManager.getWifiState(), Toast.LENGTH_SHORT).show(); 
      
           
        
           
  class CheckWifiListener implements OnClickListener{ 
      public void onClick(View v) { 
       wifiManager = (WifiManager)ClientActivity.this.getSystemService(Context.WIFI_SERVICE); 
       System.out.println("wifi state --->" + wifiManager.getWifiState()); 
       Toast.makeText(ClientActivity.this, "当前Wifi网卡状态为" +  
    wifiManager.getWifiState(), Toast.LENGTH_SHORT).show(); 
      
            
        
}

这个是我在手机上运行时截的图,下面三个按钮是操作wifi网关的按钮,下面的那个提示框是按下这个按钮出现的,数字为0表示正在关闭wifi,数字2表示正在开启wifi,数字1表示wifi处于关闭状态,数字3表示 wifi处于开启状态。

上面的的发送按钮可以发送数据到服务器,实验室的是局域网,没有无线网络,我利用一个无线路由与电脑相连,在利用手机wifi搜索到该网络,手机与电脑构 成局域网,便可发送数据。至于服务器端,可以采用网络调试助手接收数据,协议选择TCP服务器,ip地址和端口视自己情况定。

当然也可以自己写个服务器端程序,再在命令行窗口中显示接收到的数据。

服务器端程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.zx.android; 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
public class Server implements Runnable 
    public void run() 
    
        try 
        
            //创建ServerSocket 
            ServerSocket serverSocket = new ServerSocket(54321); 
            while (true
            
                //接受客户端请求 
                Socket client = serverSocket.accept(); 
                System.out.println("accept"); 
                try 
                
                    //接收客户端消息 
                    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
                    String str = in.readLine(); 
                    System.out.println("read:" + str);     
                    //向服务器发送消息 
                    PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);       
                    out.println("server message");  
                    //关闭流 
                    out.close(); 
                    in.close(); 
                
                catch (Exception e) 
                
                    System.out.println(e.getMessage()); 
                    e.printStackTrace(); 
                
                finally 
                
                    //关闭 
                    client.close(); 
                    System.out.println("close"); 
                
            
        
        catch (Exception e) 
        
            System.out.println(e.getMessage()); 
        
    
    //main函数,开启服务器 
    public static void main(String[] args) 
    
        Thread desktopServerThread = new Thread(new Server()); 
        desktopServerThread.start(); 
    
}

Android学习笔记--通过wifi向服务器端发送数据的更多相关文章

  1. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  2. Android(java)学习笔记80:UDP协议发送数据

    UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; import java.io.IOException; import java.net. ...

  3. Android(java)学习笔记20:UDP协议发送数据

    1. UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: package cn.itcast_02; import java.io.IOException; import java.net ...

  4. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  5. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  6. 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...

  7. 【转】 Pro Android学习笔记(七七):服务(2):Local Service

    目录(?)[-] Local service代码 调用Local ServiceLocal Service client代码 AndroidManifestxml定义Serviceacitivty的l ...

  8. 【转】 Pro Android学习笔记(七五):HTTP服务(9):DownloadManager

    目录(?)[-] 小例子 保存在哪里下载文件信息设置和读取 查看下载状态和取消下载 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csd ...

  9. 【转】 Pro Android学习笔记(六九):HTTP服务(3):HTTP POST MultiPart

    目录(?)[-] 建立测试环境 开发环境导入第三方JAR HTTP Post Multipart小例子 HTTP POST不仅可以通过键值对传递参数,还可以携带更为复杂的参数,例如文件.HTTP Po ...

随机推荐

  1. 【模板】堆优化 + dij +pair 存储

    就是短 感谢Cptraserdalao的博客 #include<bits/stdc++.h> using namespace std; struct node { int val,num; ...

  2. JDBC流程

    最近要学习Mybatis的源码,因此对JDBC的使用进行总结. 一.JDBC概述 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java ...

  3. Spring MVC + Velocity实现国际化配置

    国际化介绍 web开发中,国际化是需要考虑的一个问题,而且这个问题一般是越早敲定越好(不然等到系统大了,翻译是个问题).下面是结合实际项目(Spring MVC+Velocity)对实现国际化的一些总 ...

  4. ES6--JavaScript的第六个版本

    一.新的变量声明方式 let/cons 与var不同,新的变量声明方式带来了一些不一样的特性,其中最重要的两个特性就是提供了块级作用域与不再具备变量提升. 若是对变量提升不怎么了解的话可以去参考我的其 ...

  5. javascript: 数组详细操作方法及解析合集(9个改变8个不变12个遍历)

    改变原数组的方法(9个): 1 2 3 4 5 let a = [1,2,3]; ES5: a.pop()/ a.shift()/ a.push()/ a.unshift()/ a.reverse() ...

  6. 如何将在线电子书保存为pdf格式

    网上有很多免费的在线电子书籍,没有pdf格式,不方便离线阅读,也不方便做记录,所以找了几个将在线内容制作成pdf文件的方法. 一.如果网站上的书籍内容没有分页,所有内容都直接显示出来了,最简单,直接将 ...

  7. Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版

    Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版 百度很多博客都不详细,弄了半天才把 Spring Boot 多模块项目构建开发整的差不多,特地重新创建配置,记录 ...

  8. 安卓测试【二】eclipse离线安装ADT

    为什么要配置ADT呢?这就相当于在eclipse里插入插件,可以编译android的相关程序. 为什么要离线呢?一个字,快!我在线装了一个下午的ADT,不是报错就是慢的跟头老牛似的. 所以我在网上下了 ...

  9. Hive使用SequenceFile存储数据

    SequenceFile是使用二进制保存数据,是可以压缩的,并且压缩后的数据可被分割,可以供mapreduce处理. 下面的实例使用SequenceFile保存Hive表的数据,并且使用了压缩. se ...

  10. LeetCode题解之Rotated Digits

    1.题目描述 2.代码 int rotatedDigits(int N) { ; ; i <= N; i++) { if (isGood(i)) { res++; } } return res; ...