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

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

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

Не отправляется UDP пакет - Программирование Android

25.12.2014, 21:14. Просмотров 451. Ответов 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!" все хорошо все отправил, но сервер ничего не принял, пакет не отправился, почему?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2014, 21:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не отправляется UDP пакет (Программирование Android):

Не доходят пакет UDP - Программирование Android
почему при передачи пакета от сервера к клиенту (используя udp) пакет (сообщение) он не получает. какой при этом ip получателя нужно...

Не отправляется по сети - Программирование Android
Доброго времени суток, хочу написать простое клиент-серверное приложение(отправлять текст из EditText одного телефона и выводить в EditText...

Не отправляется файл - Программирование Android
Здравствуйте. Приложение не хочет отправлять картинку, вместо этого отправляет текст с путём к ней делал так: Bitmap...

Широковещательный пакет в локальную сеть - Программирование Android
Всем привет! Я пишу приложение под Android, которое должно отправлять в сеть широковезательный пакет? Приложение закрывается при...

UDP клиент-сервер. Пакет - C++ Builder
Доброго времени, ребят! Возникла проблема. В универе дали задание в довольно ИНФОРМАТИВНОМ виде... Цитирую: &quot;- пакет - от 1 до...

По UDP не уходит большой пакет - C++ Qt
Приветствую всех. Возникла странная проблема с отправкой пакетов, может кто подскажет в чем может быть косяк. Работаю с QUdpSocket,...

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

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

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

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

Добавлено через 11 минут
Да проблема была именно в этом, тестировал на эмуляторе естесно там localhost не компьютер, ну а на реальном устройстве вообще забыл что у меня не внешний прописан
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2014, 22:09
Привет! Вот еще темы с ответами:

Отправить/принять пакет UDP - C++
Требуется решить такую задачу: Создать приложение Win32 с оконным интерфейсом. По нажатию кнопки приложение отправляет пакет UDP...

Как программно отправить udp пакет? - Delphi
нужно отправить udp пакт на определенный url через сокеты что то не могу! кто может помогите!и чтобы выводилось количество отправленных...

Как перенаправить udp пакет на другой адрес? - Ubuntu Linux
Дано: Есть хост А. eth0 ip: 192.168.1.1:5555 Есть хост B. eth0 ip: 192.168.1.5:5555; eth1 ip: 11.11.0.5:5555 Есть хост C. eth0 ip:...

Как идентифицировать UDP пакет от определенного пользователя за NAT? - C#
Всем привет! Кто может подсказать как идентифицировать UDP пакет от определенного пользователя за NAT???


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.12.2014, 22:09
Ответ Создать тему
Опции темы

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