Тест UDP-соединения на BlackBerry Simulator

Я пытаюсь отправить данные с помощью UDP (дейтаграммы). Я не могу протестировать приложение на симуляторе. Я попробовал запустить сначала MDS, а затем симулятор, но это не сработало. Ошибка отображается, так как порт 8080 уже используется на консоли симулятора BlackBerry. Как изменить порт в симуляторе? Порт UDP, к которому я подключаюсь, - localhost: 5014.

Я использую симулятор для BlackBerry Pearl 8100.


person iOSDev    schedule 13.05.2009    source источник


Ответы (1)


На форуме Blackberry есть комментарии о проблемы с дейтаграммами в версиях от 4.5.0.x до 4.5.0.83. Неудивительно, что в sdk нет образцов UDP. Вы всегда можете загрузить 8100 с симулятором 4.5.0.108 со страницы http://na.blackberry.com/eng/developers/

Другое дело использовать ip, хотя имя хоста разрешено в ссылке api, но при использовании симулятора MDS он получает псевдоним localhost.

В следующем коде у вас есть простой сервер, который прослушивает порт 135, и клиент bb, который отправляет пакет данных на 127.0.0.1 на порт 135.

Код настольного сервера:

public static void main(String[] args) {
    byte[] inBuff = new byte[32];
    DatagramSocket socket;
    try {
        socket = new DatagramSocket(137);
        DatagramPacket pckt = new DatagramPacket(inBuff, inBuff.length);
        while (true) {
            socket.receive(pckt);
            System.out.println(new Date() + " " + pckt.getAddress()
                    + ":" + pckt.getPort());
            socket.send(pckt);
        }
    } catch (Exception e) {
        System.out.println(e.getMessage()+":");
        System.out.println(e.getClass().getName());
    }
}

Код клиента BlackBerry (протестирован с помощью Bold 8900 в версии 4.6.1):

    UDPDatagramConnection connection = null;
    byte[] outBuff = "Hello!".getBytes();
    Datagram outDatagram = null;
    try {
        connection = (UDPDatagramConnection) Connector
                .open("datagram://127.0.0.1:137");
        outDatagram = connection.newDatagram(outBuff, outBuff.length);
        connection.send(outDatagram);
        System.out.println("Datagram packet was sent");
    } catch (Exception e) {
        System.out.println(e.getMessage()+":");
        System.out.println(e.getClass().getName());
    }
person Maksym Gontar    schedule 02.06.2009
comment
Я новичок в этой разработке BB. Как мне получить доступ к UDPDatagramConnection? Это библиотека, которую мне нужно импортировать? Я использую плагин Visual Studio от RIM для разработки BB. - person Saif Khan; 05.07.2009
comment
Плагин BB VS используется для разработки приложений RAD, а не j2me, поэтому доступа к UDPDatagramConnection нет. Для запуска этого кода вы можете использовать плагин Eclipse BB или BB JDE. Чтобы задать вопрос об аналогичной функциональности плагина VS, я бы предложил создать отдельный вопрос. - person Maksym Gontar; 05.07.2009