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

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

Войти
Регистрация
Восстановить пароль
 
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
#1

Не отправляется UDP пакет - Android

25.12.2014, 21:14. Просмотров 406. Ответов 4
Метки нет (Все метки)

в потоке устанавливаю соединение с сервером:
Кликните здесь для просмотра всего текста
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@Override
protected Void doInBackground(Void... params)
{
    if (this.MA == null)    return null;
    //java.util.concurrent.TimeUnit.SECONDS.sleep(10);  
    byte[] message = new byte[1500];
    try {
        host = java.net.InetAddress.getByName( "127.0.0.1" ) ;
    } catch (UnknownHostException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
        this.MA.toast__(e1.getMessage());
    }
    java.net.DatagramPacket p = new java.net.DatagramPacket(message, message.length, host, 82);     
    try {
        socket = new java.net.DatagramSocket();
    } catch (SocketException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
        return null;
    }
    socket.connect(host, 82);
    while(true)
    {
        try
        {
            socket.receive(p);
            java.io.DataInputStream in = new java.io.DataInputStream(new java.io.ByteArrayInputStream (message));
            short PacketType = in.readShort(); 
            switch (PacketType)
            {
                default:    MA.toast__("TNet: Recv. PocketType: " + new Short(PacketType).toString());
            }
            traff += message.length;
            in = null;
        } catch (java.io.IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch( Exception e ) {
            e.printStackTrace();
            this.MA.toast__(e.getMessage());
        }
    }
    /*if (socket != null) socket.close();
    socket = null;
    p = null;
    return null;*/
}


далее отдельная функция для отправления сообщений:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void Send(byte[] msg)
{
    this.MA.toast__("HOST: "+host.toString());
    if (socket == null || !socket.isConnected())    return;
    java.net.DatagramPacket pack = new java.net.DatagramPacket(msg, msg.length, host, 82);
    try
    {
        socket.send(pack);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        this.MA.toast__(e.getMessage());
    } finally {
        traff += msg.length;
        this.MA.toast__("Packet has been sended!");
    }
    pack = null;
    return;
}


Вызываю из главного потока:
Кликните здесь для просмотра всего текста
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
byte[] message = new byte[1500];
outMsg = new java.io.ByteArrayOutputStream();
out = new java.io.DataOutputStream(outMsg);                 
try
{
    out.writeShort(0);
    out.writeUTF(EditText1.getText().toString().trim());
    out.writeUTF(EditText2.getText().toString().trim());
    out.flush();
    out.close();
    message = outMsg.toByteArray();
} catch (IOException e) {
    // TODO Auto-generated catch block
    this.toast__(e.getMessage());
    e.printStackTrace();
} catch( Exception e ) {
    this.toast__(e.getMessage());
    e.printStackTrace();
}
try
{
    outMsg.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    this.toast__(e.getMessage());
    e.printStackTrace();
}
out = null;                 
outMsg = null;
if (message.length > 0) ((NetWork)objs[22]).Send(message);
else
    this.toast__("Packet size <= 0");


сокет в функции отправления тот который был инициализирован в потоке, пишет "Packet has been sended!" все хорошо все отправил, но сервер ничего не принял, пакет не отправился, почему?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2014, 21:14     Не отправляется UDP пакет
Посмотрите здесь:

UDP клиент-сервер. Пакет C++ Builder
C++ Отправить/принять пакет UDP
Не отправляется файл Android
Android Данные из принятого UDP пакета
Android Отправка пакета (UDP)
Не приходит UDP сообщение Android
Android Не отправляется по сети
Android Прием UDP пакетов
Android Широковещательный пакет в локальную сеть
По UDP не уходит большой пакет C++ Qt
Как перехватить пакет (запрос) данных при текущей передаче данных? Android
Android Не работает UDP сервер

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4259 / 2791 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
25.12.2014, 21:38     Не отправляется UDP пакет #2
Цитата Сообщение от Путин Посмотреть сообщение
пишет "Packet has been sended!" все хорошо все отправил
В том то и дело, что эта строка напишется в любом случае не зависимо от результата. Советую все же ее писать, если пакет действительно отправлен.
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
25.12.2014, 21:45  [ТС]     Не отправляется UDP пакет #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
В том то и дело, что эта строка напишется в любом случае не зависимо от результата. Советую все же ее писать, если пакет действительно отправлен.
А это можно узнать не спрашивая у сервера?

Добавлено через 4 минуты
Да и может он все таки был отправлен, но не дошел.
Здесь "this.MA.toast__("HOST: "+host.toString());" выводит "/127.0.0.1"
откуда взялся слэш не пойму или это искажение такое типы то разные...
Kastaneda
Форумчанин
Эксперт С++
4259 / 2791 / 219
Регистрация: 12.12.2009
Сообщений: 7,120
Записей в блоге: 1
Завершенные тесты: 1
25.12.2014, 21:53     Не отправляется UDP пакет #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Путин Посмотреть сообщение
А это можно узнать не спрашивая у сервера?
UDP без подтверждения уходят, по сути "вникуда".

Я имел ввиду, что toast, который пишет мессаджд, что пакет ушел нужно перенести из finally{} в try{}, сразу за send()

Добавлено через 1 минуту
Кстати сервер на телефоне запущен?
Путин
42 / 22 / 6
Регистрация: 14.04.2011
Сообщений: 578
25.12.2014, 22:09  [ТС]     Не отправляется UDP пакет #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Кстати сервер на телефоне запущен?
нет сервер запущен на компьютере С++, но я понял намек, сейчас попробуем внешний IP заюзать

Добавлено через 11 минут
Да проблема была именно в этом, тестировал на эмуляторе естесно там localhost не компьютер, ну а на реальном устройстве вообще забыл что у меня не внешний прописан
Yandex
Объявления
25.12.2014, 22:09     Не отправляется UDP пакет
Ответ Создать тему
Опции темы

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