android中客服端和服务器端的链接

本文主要简单介绍了android手机中模拟客户端和服务器端的通信,其中服务器端的开发使用了JavaSE中的知识,其主要代码如下:

   android客服端源码:

   

  
  
  
  
  1. package com.socket.client;  
  2.  
  3. import java.io.*;  
  4. import java.net.Socket;  
  5. import java.net.UnknownHostException;  
  6.  
  7. import android.app.Activity;  
  8. import android.os.Bundle;  
  9. import android.text.TextUtils;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.EditText;  
  14. import android.widget.Toast;  
  15.  
  16. public class main extends Activity implements OnClickListener {  
  17.     // 定义声明需要用到的UI元素  
  18.     private EditText edtmsgcontent;  
  19.     private Button btnSend;  
  20.     //ip地址  
  21.     private String ip = "10.0.2.2";  
  22.     //端口号  
  23.     private int port = 8080;  
  24.     @Override 
  25.     public void onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.main);  
  28.         InitView();  
  29.     }  
  30.  
  31.     private void InitView() {  
  32.         // 通过id获取ui元素对象  
  33.         edtmsgcontent = (EditText) findViewById(R.id.msgcontent);  
  34.         btnSend = (Button) findViewById(R.id.btnsend);  
  35.         // 为btnsend设置点击事件  
  36.         btnSend.setOnClickListener(this);  
  37.     }  
  38.  
  39.     public void onClick(View bt) {  
  40.         try {  
  41.             String msg = edtmsgcontent.getText().toString();  
  42.             if (!TextUtils.isEmpty(msg))  
  43.                 SendMsg(ip, port, msg);  
  44.             else {  
  45.                 Toast.makeText(this"请先输入要发送的内容", Toast.LENGTH_LONG);  
  46.                 edtmsgcontent.requestFocus();  
  47.             }  
  48.         } catch (Exception e) {  
  49.               
  50.             e.printStackTrace();  
  51.         }  
  52.     }  
  53.  
  54.     public void SendMsg(String ip, int port, String msg)  
  55.             throws UnknownHostException, IOException {  
  56.         try {  
  57.             Socket socket = null;  
  58.             socket = new Socket(ip, port);  
  59.             BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(  
  60.                     socket.getOutputStream()));  
  61.             writer.write(msg);  
  62.             writer.flush();  
  63.             writer.close();  
  64.             socket.close();  
  65.         } catch (Exception e) {  
  66.             e.printStackTrace();  
  67.         }  
  68.     }  

  注意要为其添加权限:

<uses-permission  android:name="android.permission.INTERNET" />

 服务器端源码:

    

  
  
  
  
  1. import java.io.BufferedReader;  
  2. import java.io.InputStreamReader;  
  3. import java.net.ServerSocket;  
  4. import java.net.Socket;  
  5.  
  6. public class TCPDesktopServer implements Runnable {  
  7.  
  8.     public static final String SERVERIP = "10.0.2.2";  
  9.  
  10.     public static final int SERVERPORT = 8080;  
  11.  
  12.     public void run() {  
  13.  
  14.         try {  
  15.  
  16.             System.out.println("S: Connecting...");  
  17.  
  18.             ServerSocket serverSocket = new ServerSocket(SERVERPORT);  
  19.  
  20.             while (true) {  
  21.  
  22.                 Socket client = serverSocket.accept();  
  23.  
  24.                 System.out.println("S: Receiving...");  
  25.  
  26.                 try {  
  27.  
  28.                     BufferedReader in = new BufferedReader(  
  29.                             new InputStreamReader(client.getInputStream()));  
  30.  
  31.                     String str = in.readLine();  
  32.  
  33.                     System.out.println("S: Received: '" + str + "'");  
  34.  
  35.                 } catch (Exception e) {  
  36.  
  37.                     System.out.println("S: Error");  
  38.  
  39.                     e.printStackTrace();  
  40.  
  41.                 } finally {  
  42.  
  43.                     client.close();  
  44.  
  45.                     System.out.println("S: Done.");  
  46.  
  47.                 }  
  48.  
  49.             }  
  50.  
  51.         } catch (Exception e) {  
  52.  
  53.             System.out.println("S: Error");  
  54.  
  55.             e.printStackTrace();  
  56.         }  
  57.     }  
  58.  
  59.     public static void main(String a[]) {  
  60.  
  61.         Thread desktopServerThread = new Thread(new TCPDesktopServer());  
  62.  
  63.         desktopServerThread.start();  
  64.     }  
  65.  
  66. }  

 其结果如下:在android手机端中输入内容

      

 

当点击发送时,我们可以看到在服务器端的控制台中输入所接受到的内容

 

 

你可能感兴趣的:(android,服务器端,Sokcet,客服端)