7 / 8 / 1
Регистрация: 18.05.2015
Сообщений: 191

Socket Server, Client

01.04.2016, 12:41. Показов 2281. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Решил разобраться с сокетами. Но почему-то сообщения не приходят...
Клиент:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
messsage = "Test"; 
                    client =null;     
                    dataOutputStream= null;
                    dataInputStream = null;
 
        Runnable runnable = new Runnable() {
            public void run() {
                try {
                client = new Socket("192.168.0.105", 1111); 
                client.setSoTimeout(20); 
                dataOutputStream = new DataOutputStream(client.getOutputStream()); 
                dataInputStream = new DataInputStream(client.getInputStream()); 
                dataOutputStream.writeUTF(messsage);
                } catch (UnknownHostException e) {
                    xy.setText(""+e);
                } catch (IOException e) {
                    xy.setText(""+e.getMessage());
                }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
Сервер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Runnable runnable = new Runnable() {
            public void run() {
                try {
                    ServerSocket ss = new ServerSocket(1111); // создаем сокет сервера и привязываем его к вышеуказанному порту
                    Socket socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером
                    // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту. 
                    InputStream sin = socket.getInputStream();
                    OutputStream sout = socket.getOutputStream();
                    // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
                    DataInputStream in = new DataInputStream(sin);
                    DataOutputStream out = new DataOutputStream(sout);
                    String line = null;
                    while(true) {
                        line = in.readUTF(); // [ожидаем пока клиент пришлет строку текста.
                        btn1.setText(line);
                    }
                } catch(Exception x) { btn1.setText(""+x); }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
Я нуб в этом. Помогите пожалуйста. (И клиент и сервер на разных Android устройствах)
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2016, 12:41
Ответы с готовыми решениями:

Socket Android Client and Java Socket Server
Доброго времени суток.Пытаюсь сделать простое клиент-серверное приложение. Клиент - приложение на Android устройстве. Сервер - Приложение...

TCP Socket Client
Всем доброго времени суток. Пытаюсь открыть сокет между Android Client и сервером под виндой (когда то написал на билде, использую в...

Android client <-Wi FI-> PC server
Всем привет. Очень хочу реализовать такую штуку. Значит надо отправлять хотяб 1 байт с андроида на пк через WI Fi На ПК вполне знаком...

9
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
01.04.2016, 13:25
den_droid, этот код вообще работать не будет.
Цитата Сообщение от den_droid Посмотреть сообщение
xy.setText(""+e);
Цитата Сообщение от den_droid Посмотреть сообщение
btn1.setText(line);
Приведёт к exception-у
0
7 / 8 / 1
Регистрация: 18.05.2015
Сообщений: 191
01.04.2016, 13:30  [ТС]
YuraAAA, хм, а как тогда вывести полученные данные?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
01.04.2016, 14:23
den_droid, https://github.com/koush/AndroidAsync например, с помощью этой штуки
0
7 / 8 / 1
Регистрация: 18.05.2015
Сообщений: 191
01.04.2016, 14:48  [ТС]
YuraAAA, хорошо, а сам код у меня более менее правильный?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
01.04.2016, 14:57
ну если не сильно уходить в теорию, то можно пока что выкрутиться минимумом, что бы выводило в textview
Java
1
2
3
4
5
6
        btn1.post(new Runnable() {
            @Override
            public void run() {
                btn1.setText(line);
            }
        });
2
7 / 8 / 1
Регистрация: 18.05.2015
Сообщений: 191
02.04.2016, 13:54  [ТС]
Паблито,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
btn1.post (new Runnable() {
            public void run() {
                try {
                    ServerSocket ss = new ServerSocket(1111); // создаем сокет сервера и привязываем его к вышеуказанному порту
                    Socket socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером
                    // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту. 
                    InputStream sin = socket.getInputStream();
                    OutputStream sout = socket.getOutputStream();
                    // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
                    DataInputStream in = new DataInputStream(sin);
                    DataOutputStream out = new DataOutputStream(sout);
                    String line = null;
                    while(true) {
                        line = in.readUTF(); // [ожидаем пока клиент пришлет строку текста.
                        btn1.setText(line);
                    }
                } catch(Exception x) { btn1.setText(""+x); }
Ошибка: Android.OS.NetworkOnMainThreadException

Добавлено через 3 минуты
Добавил @Override - тоже самое.

Добавлено через 2 минуты
Паблито,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Runnable runnable = new Runnable() {
            public void run() {
                try {
                    ServerSocket ss = new ServerSocket(1111); // создаем сокет сервера и привязываем его к вышеуказанному порту
                    Socket socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером
                    // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту. 
                    InputStream sin = socket.getInputStream();
                    OutputStream sout = socket.getOutputStream();
                    // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
                    DataInputStream in = new DataInputStream(sin);
                    DataOutputStream out = new DataOutputStream(sout);
                    
                    while(true) {
                        line = in.readUTF(); // [ожидаем пока клиент пришлет строку текста.
                        btn1.post(new Runnable() {
                            public void run() {
                        btn1.setText(line);
                        }
                        });
                    }
                } catch(Exception x) { btn1.setText(""+x); }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
Ошибки не выдает, сейчас протестирую

Добавлено через 37 минут
Паблито, теперь, все работает. Но после 1 успешного приема данных, дальше прием не идет. Как решить эту проблему?

Добавлено через 22 часа 7 минут
Паблито, хорошо, у меня все получилось кроме одного. Как отключить клиента? При закрытии приложения сервер вылетает.
client.close();
Тоже вылетает.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.04.2016, 13:57
с какой ошибкой в логах вылетает, надо догадаться?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
02.04.2016, 14:15
Лучший ответ Сообщение было отмечено den_droid как решение

Решение

Паблито, den_droid, ой, а я догадываюсь с какой. Я же сразу об этом писал, почему меня никто не слушает.
Цитата Сообщение от den_droid Посмотреть сообщение
} catch(Exception x) { btn1.setText(""+x); }
2
7 / 8 / 1
Регистрация: 18.05.2015
Сообщений: 191
02.04.2016, 14:58  [ТС]
YuraAAA, да, Вы абсолютно правы. Спасибо вам огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2016, 14:58
Помогаю со студенческими работами здесь

Android, client-server
Здравствуйте, раньше писал, что делаю приложение на диплом, что-то похожие на google maps, сейчас возник вопрос об авторизацие. ...

Client(android) - Server (PC) - Delphi
Здравствуйте. Подскажите как можно реализовать Client(android) - Server (PC) - Delphi , требуется отправить сообщение с телефона и...

client/server для android phone <-> pc на java
Написал клиент/сервер на java для передачи сообщений из телефона в комп. Клиент на телефон samsung galaxy fit gt-s5670 с Android 2.2.1,...

Socket server over 3g
Привет. Хотел программу написать, сервер сокет, но что то в сети 3g не работает. Через домашний роутер с wifi и проброс портов все...

Server->Client Обновление БД длинной строкой. Приходит не все отосланное
Отправляю из Сишной проги по сокету, длинную строку с командами создания и обновления БД Sqlite на андроиде. При приеме вычитывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru