Ошибка Android Socket при запуске на AVD - PullRequest
0 голосов
/ 08 марта 2012

У меня проблема в сокете следующего кода, из-за которого программа, когда я запускаю ее на AVD, перестала работать (К сожалению, ваш -app- остановился), я использую платформу Android 4.0 на Windows 7 .. Я пытался переместить секцию сокета на нажатие кнопки, поэтому, когда я нажимаю на кнопку, программа перестает работать, поэтому здесь в определении сокета делают ошибку. (Розетка;)

public class ServerClient extends Activity {
// declaration of button, textView
private Button bt;
   private TextView tv;
  //port number
   private static final int REDIRECTED_SERVERPORT = 5000;
  //ip address
   private String serverIpAddress = "10.0.2.2";
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      bt = (Button) findViewById(R.id.myButton);
      tv = (TextView) findViewById(R.id.myTextView);

         // on click on the button the socket will be created
      bt.setOnClickListener(new OnClickListener() {

           Socket socket; //this line cause the app to stop working

         public void onClick(View v) {

          try {
             InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
             socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);

          } catch (UnknownHostException e1) {
             e1.printStackTrace();
          } catch (IOException e1) {
             e1.printStackTrace();
          }
            try {
               EditText et = (EditText) findViewById(R.id.EditText01);
               String str = et.getText().toString();
               PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(socket.getOutputStream())),
                     true);
               out.println(str);
               Log.d("Client", "Client sent message");

            } catch (UnknownHostException e) {
               tv.setText("Error1");
               e.printStackTrace();
            } catch (IOException e) {
               tv.setText("Error2");
               e.printStackTrace();
            } catch (Exception e) {
               tv.setText("Error3");
               e.printStackTrace();
            }
         }
      });
   }
}

Ответы [ 3 ]

2 голосов
/ 11 июня 2012

Здравствуйте, у меня была такая же проблема (Windows 7, Android 4.03).Я решил проблему, используя Android 2.33 (уровень API 10) и эмулятор с ядром Android 2.33.

1 голос
/ 03 марта 2014

Вы должны перенаправить порт с вашего компьютера на AVD с помощью этой команды в adb:

adb forward tcp:YOUR_PORT_NUM tcp:YOUR_PORT_NUM
1 голос
/ 08 марта 2012

У вас есть права доступа к Интернету в вашем AndroidManifest.xml?

Вам нужна эта строка:

<uses-permission android:name="android.permission.INTERNET" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...