Страница 1 из 1

Не работает подключение через ServerSocket

Добавлено: 05 июл 2018, 12:36
WorldMaster
Здравствуйте.
Подскажите в какую сторону копать?
Пишу сервер на телефоне который будет принимать запросы с компьютеров и обрабатывать их. Но проблема в том что телефон не отвечает даже на запросы пинга. Клиенты вываливаются с ошибкой что адрес недоступен. Хотя адрес и мак видно в карте роутера.

Вот код сервера:

Код: Выделить всё

private class SocketServerThread extends Thread {

        static final int SERVER_PORT = 1234;
        int count = 0;
        String command = "";
        Context context;

        public SocketServerThread(Context activity) {

            this.context = activity;
        }

        @Override
        public void run() {
            try {
                serverSocket = new ServerSocket();
                serverSocket.setReuseAddress(true);
                serverSocket.bind(new InetSocketAddress(SERVER_PORT));
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        info.setText("Started on : " + serverSocket.getLocalPort());
                    }
                });

                while (!socketServerThread.interrupted()) {
                    Socket socket = serverSocket.accept();
                    count++;
                    message += "#catch: " + socket.getInetAddress() + ":" + socket.getPort() + "\n";

                    // пробуем прочитать данные из потока
                    command = "";
                    try {
                        DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
                        byte[] bytes = new byte[2048];
                        int count = in.read(bytes, 0, bytes.length);
                        if (count > 0) {
                            command = new String(bytes, "windows-1251");
                            message += command + "\n";
                        }
                        message += "BROCKEN MESSAGE\n";
                    } catch (Exception ex) {
                        message += "EXCEPTION MESSAGE\n";
                    }

                    MainActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            msg.setText(message);
                        }
                    });

                    SocketServerReplyThread socketServerReplyThread = new SocketServerReplyThread(socket, count);
                    socketServerReplyThread.run();
                }
                serverSocket.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                final String message = e.getMessage();
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        info.setText("Server fail " + message);
                    }
                });
            }
            TaskRunned = false; // говорим что не работает поток потом сможем запустить повторно из таймера
        }

    }
Вроде в примере на тытрубе это все работало.
У меня телефон в сети, но пинг с компа не проходит ни в какую. Следовательно и доступа к серверу тоже нету.

Вот разрешения манифеста

Код: Выделить всё

<uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
    <uses-permission android:name="android.permission.ACTION_CALL"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"/>
Подскажите пожалуйста может чтото не так сделал??