在Android下巧妙使用Socket连接网络中的电脑

东坡下载 2011年04月19日 19:29:29

      既然是使用SOCKET连接网络上的电脑,就分为两部分

      其一,Android上面的Client

      其二,PC上的Server

      Android上面的实现代码如下

      view plaincopy to clipboardprint?

      package Hello.MySocket;

      import java.io.BufferedReader;

      import java.io.BufferedWriter;

      import java.io.IOException;

      import java.io.InputStreamReader;

      import java.io.OutputStreamWriter;

      import java.io.PrintWriter;

      import java.net.Socket;

      import java.net.UnknownHostException;

      import android.app.Activity;

      import android.os.Bundle;

      import android.util.Log;

      import android.view.View;

      import android.widget.Button;

      import android.widget.EditText;

      import android.widget.TextView;

      public class MySocket extends Activity {

      private final String DEBUG_TAG="lengfeng";

      public void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.main);

      Log.v("lengfeng","Android Start Connect");

      Socket socket=null;

      String mesg="my name is log \r\n";

      try {

      socket=new Socket("10.0.2.2",54321);

      //向服务器发送信息

      PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);

      out.println(mesg);

      //接受服务器的信息

      BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

      String mstr=br.readLine();

      if(mstr!=null)

      {

      Log.e(DEBUG_TAG,mesg);

      }else

      {

      Log.e(DEBUG_TAG,"数据错误");

      }

      out.close();

      br.close();

      socket.close();

      } catch (UnknownHostException e) {

      e.printStackTrace();

      } catch (IOException e) {

      e.printStackTrace();

      }catch(Exception e)

      {

      Log.e(DEBUG_TAG,e.toString());

      }

      }

      }

      package Hello.MySocket;

      import java.io.BufferedReader;

      import java.io.BufferedWriter;

      import java.io.IOException;

      import java.io.InputStreamReader;

      import java.io.OutputStreamWriter;

      import java.io.PrintWriter;

      import java.net.Socket;

      import java.net.UnknownHostException;

      import android.app.Activity;

      import android.os.Bundle;

      import android.util.Log;

      import android.view.View;

      import android.widget.Button;

      import android.widget.EditText;

      import android.widget.TextView;

      public class MySocket extends Activity {

      private final String DEBUG_TAG="lengfeng";

      public void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.main);

      Log.v("lengfeng","Android Start Connect");

      Socket socket=null;

      String mesg="my name is log \r\n";

      try {

      socket=new Socket("10.0.2.2",54321);

      //向服务器发送信息

      PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);

      out.println(mesg);

      //接受服务器的信息

      BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

      String mstr=br.readLine();

      if(mstr!=null)

      {

      Log.e(DEBUG_TAG,mesg);

      }else

      {

      Log.e(DEBUG_TAG,"数据错误");

      }

      out.close();

      br.close();

      socket.close();

      } catch (UnknownHostException e) {

      e.printStackTrace();

      } catch (IOException e) {

      e.printStackTrace();

      }catch(Exception e)

      {

      Log.e(DEBUG_TAG,e.toString());

      }

      }

      }

      PC上面的Server 创建一个java的项目

      view plaincopy to clipboardprint?

      import java.io.BufferedReader;

      import java.io.BufferedWriter;

      import java.io.IOException;

      import java.io.InputStreamReader;

      import java.io.OutputStreamWriter;

      import java.io.PrintWriter;

      import java.net.ServerSocket;

      import java.net.Socket;

      public class MyJavaServer {

      /**

      * @param args

      */

      public static void main(String[] args) {

      // TODO Auto-generated method stub

      System.out.print("MyJavaServer Start Runing\n");

      try {

      ServerSocket serverSocket=new ServerSocket(54321);

      while(true)

      {

      System.out.println("接收用户连接:");

      //接受客户端请求

      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:"+str);

      in.close();

      out.close();

      }catch(Exception ex)

      {

      System.out.println(ex.getMessage());

      ex.printStackTrace();

      }

      finally

      {

      client.close();

      System.out.println("close");

      }

      }

      } catch (IOException e) {

      System.out.println(e.getMessage());

      }

      }

      }