Android中的socket

原创 2012年03月22日 14:18:33

客户端:

    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地址和端口视自己情况定。

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

服务器端程序如下:

    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 socket 多用户通信

  • 2016-11-29 15:44
  • 184KB
  • 下载

Android socket通信

 Socket accept():如果接受到一个客户端Socket的连接请求,该方法将返回一个与连接客户端Socket对应的Socket(每个TCP有2个Socket),否则该方法将一直处于等待...
  • zkeal
  • zkeal
  • 2015-06-18 14:13
  • 150

Socket android

  • 2013-12-10 22:04
  • 965KB
  • 下载

Android自动化测试初探(四): 模拟键盘鼠标事件(Socket+Instrumentation实现)

通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成: l   Socket编程:实现PC和Emulator通讯,并进行循环监听 l   Service...

android video socket

  • 2014-03-19 17:15
  • 605KB
  • 下载

android socket和.net

  • 2013-12-01 21:03
  • 25KB
  • 下载

android socket通信(上)

android socket通信(上) 今天我们介绍android下的socket通信,并编写一个小程序:android作为客户端,通过socket发送数据到我们的pc机,pc机就是服务器。...
  • htttw
  • htttw
  • 2012-05-16 22:37
  • 89497

Android使用Socket实现UDP

  • 2013-04-22 21:08
  • 60KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)