歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android手機通過socket與pc通信

Android手機通過socket與pc通信

日期:2017/3/1 10:17:04   编辑:Linux編程

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

代碼的運行環境:

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

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

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

pc端代碼:

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