Android与服务器通信的方法之一(TCP)效率高安全性完善

arthurcsh 12年前

Android与服务器通信的方法之一(TCP)效率高安全性完善

客户端代码:
Java代码 

package com.yarin.android.Examples_08_04;         import java.io.BufferedReader;     import java.io.BufferedWriter;     import java.io.InputStreamReader;     import java.io.OutputStreamWriter;     import java.io.PrintWriter;     import java.net.InetAddress;     import java.net.Socket;     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;         public class Activity01 extends Activity     {         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);                          //登陆             mButton.setOnClickListener(new OnClickListener()             {                 public void onClick(View v)                 {                     Socket socket = null;                     String message = mEditText.getText().toString() + "\r\n";                      try                      {                            //创建Socket                         socket = new Socket("116.29.27.138",5554); //查看本机IP,每次开机都不同                         //socket=new Socket("192.168.1.110",50000);                         //向服务器发送消息                         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());                     }                 }             });         }     }      import java.io.BufferedReader;   import java.io.BufferedWriter;   import java.io.InputStreamReader;   import java.io.OutputStreamWriter;   import java.io.PrintWriter;   import java.net.InetAddress;   import java.net.Socket;   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;     public class Activity01 extends Activity   {   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);     //登陆   mButton.setOnClickListener(new OnClickListener()   {   public void onClick(View v)   {   Socket socket = null;   String message = mEditText.getText().toString() + "\r\n";   try   {  //创建Socket   socket = new Socket("116.29.27.138",5554); //查看本机IP,每次开机都不同   //socket=new Socket("192.168.1.110",50000);   //向服务器发送消息   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());   }   }   });   }   }     服务器端代码:   Java代码    package com.yarin.android.Examples_08_04;         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(5554);                 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 a[])         {             Thread desktopServerThread = new Thread(new Server());             desktopServerThread.start();         }     }