zoukankan      html  css  js  c++  java
  • Android学习笔记--通过wifi向服务器端发送数据

    (转自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(); 
          
                
            
    }

    0_13090842637boz

        这个是我在手机上运行时截的图,下面三个按钮是操作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(); 
        
    }
  • 相关阅读:
    flume1.7.0的安装与使用
    获取top10
    editplus格式化xml文档
    LOG4J.PROPERTIES配置详解
    Oracle自增列
    javascript 传递引用类型参数
    {JavaScript}栈和堆内存,作用域
    JAVA中String与StringBuffer的区别
    Java中堆和栈的区别(转)
    JAVA错误:org.apache.jasper.JasperException: java.lang.ClassCastException:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apach
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3573813.html
Copyright © 2011-2022 走看看