歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android手機通過socket與pc通信

在Android中可以直接利用java中的Socket與ServerSocket構建socket通信。

代碼的運行環境:

pc端:普通pc,作為服務器,已經設置有域名(通過動態域名軟件設置),在5648端口進行監聽。

Android手機客戶端:android2.3設備。

代碼運行一切正常,客戶端發送的文字將在服務器端接收並顯示,服務器每接收到客戶端的一行文字,就會返回一個從0開始遞增的整數,此整數將在客戶端顯示出來。

pc端代碼:

  1. package test;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.OutputStream;  
  8. import java.io.PrintWriter;  
  9. import java.net.ServerSocket;  
  10. import java.net.Socket;  
  11.   
  12.   
  13. public class Test implements Runnable{  
  14.   
  15.     /** 
  16.      * @param args 
  17.      */  
  18.       
  19.     int max=10;      //最大開啟線程數   
  20.     int i=0;         //回復數字   
  21.     int temp;  
  22.     ServerSocket serverSocket;  
  23.     Socket socket[];  
  24.       
  25.     public Test(){  
  26.           
  27.         try {  
  28.             serverSocket=new ServerSocket(5648);    //在5648端口進行偵聽   
  29.         } catch (IOException e) {  
  30.             // TODO Auto-generated catch block   
  31.             e.printStackTrace();  
  32.             System.out.println("can't initate ServerSocket!");  
  33.             return;  
  34.         }  
  35.           
  36.         socket=new Socket[max];  
  37.           
  38.         System.out.println("waiting for connect");  
  39.         try {  
  40.             while((socket[i]=serverSocket.accept())!=null){  
  41.                 temp=i;  
  42.                 i++;  
  43.                 new Thread(this).start();           //每偵聽到一個客戶端的連接,就會開啟一個工作線程   
  44.                   
  45.             }  
  46.         } catch (IOException e) {  
  47.             // TODO Auto-generated catch block   
  48.             e.printStackTrace();  
  49.         }  
  50.     }  
  51.     public static void main(String[] args) {  
  52.         new Test();  
  53.   
  54.     }  
  55.   
  56.     @Override  
  57.     public void run() {  
  58.         Socket sk=socket[temp];  
  59.         System.out.println("accept:"+sk.getInetAddress().getHostAddress());  
  60.         InputStream is=null;  
  61.         OutputStream os=null;  
  62.         BufferedReader br=null;  
  63.         PrintWriter pw=null;  
  64.         try {  
  65.             is=sk.getInputStream();  
  66.             os=sk.getOutputStream();  
  67.             br=new BufferedReader(new InputStreamReader(is));  
  68.             pw=new PrintWriter(os);  
  69.         } catch (IOException e) {  
  70.             // TODO Auto-generated catch block   
  71.             e.printStackTrace();  
  72.             try {  
  73.                 sk.close();  
  74.             } catch (IOException e1) {  
  75.                 // TODO Auto-generated catch block   
  76.                 e1.printStackTrace();  
  77.             }  
  78.             return;  
  79.         }  
  80.         String str;  
  81.         try {  
  82.             int m=0;  
  83.             while((str=br.readLine())!=null){  
  84.                 System.out.println(str);  
  85.                 pw.println(m);  
  86.                 pw.flush();  
  87.                 m++;  
  88.             }  
  89.         } catch (IOException e) {  
  90.             // TODO Auto-generated catch block   
  91.             e.printStackTrace();  
  92.         }  
  93.           
  94.     }  
  95.   
  96. }  
Copyright © Linux教程網 All Rights Reserved