Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Операционные системы > Мобильные ОС (Android, iOS, Windows Phone)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 05.07.2018, 12:14   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,541
По умолчанию Не работает подключение через ServerSocket

Здравствуйте.

Подскажите в какую сторону копать?

Нужен сервер на телефоне который будет принимать запросы с компьютеров и обрабатывать их.

Вот код сервера:
Код:
    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"/>
Поиски в гугле тоже ничего толкового не дали.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает запрет на подключение к сайту через hosts студент_ученик Операционные системы общие вопросы 8 29.09.2017 18:34
БД через ServerSocket minamoto БД в Delphi 9 30.07.2011 02:45
подключение двух компьютеров к интернет через одно подключение Chudo4258 Помощь студентам 3 30.03.2010 15:07


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS