Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
alex-rudenkiy
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 392
#1

Не работает UDP сервер - Android

02.05.2016, 21:13. Просмотров 268. Ответов 5
Метки нет (Все метки)

Почему у меня вылетает приложение на ds.receive(dp);?
В манифесте android.permission.INTERNET есть если что.

Assembler
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
26
27
28
29
30
31
32
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.text1);
        runUdpServer();
    }
    private static final int UDP_SERVER_PORT = 11111;
    private static final int MAX_UDP_DATAGRAM_LEN = 1500;
    private void runUdpServer() {
        String lText;
        byte[] lMsg = new byte[MAX_UDP_DATAGRAM_LEN];
        DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(UDP_SERVER_PORT);
            //disable timeout for testing
            //ds.setSoTimeout(100000);
            ds.receive(dp);
            lText = new String(lMsg, 0, dp.getLength());
            Log.i("UDP packet received", lText);
            textView.setText(lText);
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ds != null) {
                ds.close();
            }
        }
        
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2016, 21:13     Не работает UDP сервер
Посмотрите здесь:

Android RSS-читалка - работает на эмуляторе, не работает на реальном девайсе
Android Сервер
Работает в Eclipce но не работает на телефоне Android
Android Данные из принятого UDP пакета
Android Отправка пакета (UDP)
Не приходит UDP сообщение Android
Android Не отправляется UDP пакет
Android Прием UDP пакетов
Стандартная функция delete в Eclipse работает а в AndroidStudio не работает Android
Не работает клиент/ сервер на физической машине Android
Android Socket.io (прослушивание события работает на Desktop и не работает на Android)
Android Не работает связь сервер/клиент

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
02.05.2016, 21:43     Не работает UDP сервер #2
Видимо потому, что вы работаете с сетью в основном потоке. А вообще положено лог ошибки выкладывать.
alex-rudenkiy
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 392
02.05.2016, 21:49  [ТС]     Не работает UDP сервер #3
DarkVortex,
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
26
27
28
29
30
31
32
33
34
05-02 18:48:07.706 3302-3302/myhome.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    Process: myhome.myapplication, PID: 3302
                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{myhome.myapplication/myhome.myapplication.MainActivity}: android.os.NetworkOnMainThreadException
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                        at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                        at android.os.Looper.loop(Looper.java:148)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                     Caused by: android.os.NetworkOnMainThreadException
                                                                        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
                                                                        at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:249)
                                                                        at libcore.io.IoBridge.recvfrom(IoBridge.java:549)
                                                                        at java.net.PlainDatagramSocketImpl.doRecv(PlainDatagramSocketImpl.java:163)
                                                                        at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:171)
                                                                        at java.net.DatagramSocket.receive(DatagramSocket.java:274)
                                                                        at myhome.myapplication.MainActivity.runUdpServer(MainActivity.java:34)
                                                                        at myhome.myapplication.MainActivity.onCreate(MainActivity.java:20)
                                                                        at android.app.Activity.performCreate(Activity.java:6237)
                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)*
                                                                        at android.app.ActivityThread.-wrap11(ActivityThread.java)*
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)*
                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)*
                                                                        at android.os.Looper.loop(Looper.java:148)*
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5417)*
                                                                        at java.lang.reflect.Method.invoke(Native Method)*
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)*
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)*
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
02.05.2016, 21:52     Не работает UDP сервер #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Добавлено через 41 секунду
Ругается на то вы в сеть лезете из основного потока

Добавлено через 2 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.text1);
        Thread network = new Thread(new runUdpServer());
        network.start();
    }
    
    class runUdpServer implements Runnable {
        @Override
        public void run() {
            //код с сетью писать суда
        }
    }
alex-rudenkiy
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 392
02.05.2016, 22:16  [ТС]     Не работает UDP сервер #5
DarkVortex, Спасибо, заработало. Только у меня ещё небольшой вопрос, почему textView.setText(lText); не хочет работать в потоке?
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
02.05.2016, 22:21     Не работает UDP сервер #6
alex-rudenkiy, а вот потому, что к UI элементам можно обращаться только из основного потока)

Java
1
2
3
4
5
6
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //тут код для ui потока
                }
            });
Это нужно поместить в код сетевого потока
Yandex
Объявления
02.05.2016, 22:21     Не работает UDP сервер
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru