Сетевое соединение с ПК на Android-устройство - PullRequest
0 голосов
/ 02 апреля 2012

Я использовал поиск по часам, но не смог найти ответ, подходящий для моего вопроса. Я просто хочу создать сетевое соединение TCP между ПК и устройством Android. Отправка данных (скажем, простой строки) с Android на ПК фактически работает без проблем с Socket и ServerSocket. Однако отправка данных с ПК на Android не работает. Там ничего не получено. Вот код:

Сервер на устройстве Android:

    try {
        ServerSocket serverSocket = new ServerSocket( 1234 );

        //tell logcat the server is online
        Log.d("TCP", "C: Server Online...");

        while ( true ) {

            Socket client = serverSocket.accept();

            BufferedReader in = new BufferedReader( new InputStreamReader(    client.getInputStream() ) );
            String input = in.readLine();
            // Do what ever you want with input String

            client.close();
        }
    } catch ( Exception e ) {
        Log.d( "TCP", "C: " + e );
    }

Клиент на ПК:

    try {

        InetAddress serverAddr;

        try {
            serverAddr = InetAddress.getByName(IPAdresse);

            socket = new java.net.Socket(serverAddr,portAdresse);
            socket.setSoTimeout(1000);
        }catch (ConnectException e) { /*e.printStackTrace();*/ }

        PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
        out.println(nachricht);

        socket.close();

    }catch (SocketException e) { 

// e.printStackTrace (); try {socket.close (); } catch (Exception e1) {}

    }catch (IOException e) {

// e.printStackTrace (); } try {socket.close (); } catch (Exception e1) {}

    }catch (NullPointerException e) {

// e.printStackTrace (); try {socket.close (); } catch (Exception e1) {/e1.printStackTrace();/}

    }

Я понятия не имею, почему это не работает. Я предполагаю, что есть проблема в моем коде Android или некоторой настройке в устройстве Android. Возможно, у кого-то уже была такая же проблема и подходящая мне душа. Очень помогло бы. Спасибо

Ответы [ 2 ]

0 голосов
/ 05 декабря 2017

Я могу вспомнить пару вещей, которые могут происходить здесь:

  1. Android только привязывает сокет к 127.0.0.1
  2. Отсутствует разрешение на телефоне
  3. Брандмауэр где-то препятствует обмену данными
  4. Вы не подключаетесь к правильному IP-адресу

Для подобных проблем я вставил много операторов печати или прошел черезкод во время анализа данных с помощью Wireshark .

0 голосов
/ 02 апреля 2012

Изменить эту строку:

PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);

к этому:

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

на вашем ПК-клиенте и посмотрите, работает ли он.

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