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

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

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

Ответ
 
Опции темы
Старый 05.07.2018, 13:14   #1
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 1,867
Репутация: 513

icq: 359393755
По умолчанию Не работает подключение через 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"/>

Поиски в гугле тоже ничего толкового не дали.
__________________
ICQ - 359393755 E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


00:10.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru