歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 模擬器和PC用sockets通訊

Android 模擬器和PC用sockets通訊

日期:2017/3/1 10:52:22   编辑:Linux編程

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

Java代碼
  1. package com.yarin.android.Examples_08_04;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;
  6. import java.io.PrintWriter;
  7. import java.net.InetAddress;
  8. import java.net.Socket;
  9. import android.app.Activity;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.Button;
  15. import android.widget.EditText;
  16. import android.widget.TextView;
  17. public class Activity01 extends Activity
  18. {
  19. private final String DEBUG_TAG = "Activity01";
  20. private TextView mTextView=null;
  21. private EditText mEditText=null;
  22. private Button mButton=null;
  23. /** Called when the activity is first created. */
  24. @Override
  25. public void onCreate(Bundle savedInstanceState)
  26. {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.main);
  29. mButton = (Button)findViewById(R.id.Button01);
  30. mTextView=(TextView)findViewById(R.id.TextView01);
  31. mEditText=(EditText)findViewById(R.id.EditText01);
  32. //登陸
  33. mButton.setOnClickListener(new OnClickListener()
  34. {
  35. public void onClick(View v)
  36. {
  37. Socket socket = null;
  38. String message = mEditText.getText().toString() + "\r\n";
  39. try
  40. {
  41. //創建Socket
  42. socket = new Socket("116.29.27.138",5554); //查看本機IP,每次開機都不同
  43. //socket=new Socket("192.168.1.110",50000);
  44. //向服務器發送消息
  45. PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
  46. out.println(message);
  47. //接收來自服務器的消息
  48. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  49. String msg = br.readLine();
  50. if ( msg != null )
  51. {
  52. mTextView.setText(msg);
  53. }
  54. else
  55. {
  56. mTextView.setText("數據錯誤!");
  57. }
  58. //關閉流
  59. out.close();
  60. br.close();
  61. //關閉Socket
  62. socket.close();
  63. }
  64. catch (Exception e)
  65. {
  66. // TODO: handle exception
  67. Log.e(DEBUG_TAG, e.toString());
  68. }
  69. }
  70. });
  71. }
  72. }
  1. package com.yarin.android.Examples_08_04;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;
  6. import java.io.PrintWriter;
  7. import java.net.InetAddress;
  8. import java.net.Socket;
  9. import android.app.Activity;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.Button;
  15. import android.widget.EditText;
  16. import android.widget.TextView;
  17. public class Activity01 extends Activity
  18. {
  19. private final String DEBUG_TAG = "Activity01";
  20. private TextView mTextView=null;
  21. private EditText mEditText=null;
  22. private Button mButton=null;
  23. /** Called when the activity is first created. */
  24. @Override
  25. public void onCreate(Bundle savedInstanceState)
  26. {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.main);
  29. mButton = (Button)findViewById(R.id.Button01);
  30. mTextView=(TextView)findViewById(R.id.TextView01);
  31. mEditText=(EditText)findViewById(R.id.EditText01);
  32. //登陸
  33. mButton.setOnClickListener(new OnClickListener()
  34. {
  35. public void onClick(View v)
  36. {
  37. Socket socket = null;
  38. String message = mEditText.getText().toString() + "\r\n";
  39. try
  40. {
  41. //創建Socket
  42. socket = new Socket("116.29.27.138",5554); //查看本機IP,每次開機都不同
  43. //socket=new Socket("192.168.1.110",50000);
  44. //向服務器發送消息
  45. PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
  46. out.println(message);
  47. //接收來自服務器的消息
  48. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  49. String msg = br.readLine();
  50. if ( msg != null )
  51. {
  52. mTextView.setText(msg);
  53. }
  54. else
  55. {
  56. mTextView.setText("數據錯誤!");
  57. }
  58. //關閉流
  59. out.close();
  60. br.close();
  61. //關閉Socket
  62. socket.close();
  63. }
  64. catch (Exception e)
  65. {
  66. // TODO: handle exception
  67. Log.e(DEBUG_TAG, e.toString());
  68. }
  69. }
  70. });
  71. }
  72. }
Copyright © Linux教程網 All Rights Reserved