Android 2.2 readUTF () Проблема с сокетом - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь создать программу клиент-сервер Java, где сервер работает на ПК с Windows, а клиент работает на телефоне Android 2.2.

Соединение в порядке. Отправка данных с телефона на ПК также работает нормально. Просто получение данных на телефон приводит к сбою программы.

Я использую DataInputStream и DataOutputStream для чтения / записи через сокет.

    //Thread on the Phone
    public void run() {
    while (RUN) {

        if (socket != null && socket.isConnected()) {
            try {
                //Crash
                String text = dis.readUTF();
                myTextView.setText(text);

            } catch (IOException ex) {
                //ErrorHandling
            }

        }

    }
}

Я хочу получить строку с сервера, а затем показать ее в TextView. Есть идеи? Я уже устанавливаю это разрешение:

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

мне нужны другие разрешения? Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 марта 2011

вы не можете установить текст в вашем пользовательском интерфейсе, если вы не в потоке пользовательского интерфейса.

сделай это ...

добавить:

Runnable showmessage = new Runnable() { public void run() { myTextView.setText(membervariabletext); } };

и из вашего потока после readUTF () вызовите "runOnUiThread (showmessage);"

0 голосов
/ 23 марта 2011

Я хотел бы убедиться, что ваш поток ввода данных инициируется правильно:

Socket s = new Socket(serverAddress, port); DataInputStream dis = new DataInputStream(s.getInputStream());

В противном случае, вот ссылка на пример кода, где кто-то использует InputStreamReader () и OutputStreamWriter () для созданиясервер и клиент для Android.

https://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...