Android與伺服器通訊的方法之一(TCP)效率高安全性完善

來源:互聯網
上載者:User

標籤:android   des   style   color   java   os   檔案   io   

之前一直會用sockets來實現emulator和PC進行通訊,卡了幾天,最後請教其他人終於可以串連了。  錯誤原因是在IP和連接埠,IP要用本機IP(在CMD輸入ipconfig,注意:每次開機本機IP都不同,ADSL是動態IP),連接埠用emulator的名稱,5554或5556.java sever檔案要另外建java工程運行,在android工程運行不了java(run application) 

用戶端代碼: 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());                   }               }           });       }   }  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()); } } }); } } 







伺服器端代碼: 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();       }   }  


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.