Ошибка отправки UDP на BlackBerry

Я пишу сетевое приложение для Blackberry. Этот код корректен на симуляторе, но не работает на устройстве. Когда я запускаю свое приложение на симуляторе, мой сервер получает сообщение, но когда я запускаю его на устройстве, я получаю исключение, not IOExceptionс сообщениемNULL".

try {
     byte[] b = msg.getBytes();
     dc = (UDPDatagramConnection)Connector.open("datagram://"+getHIP()+":" + getHPort());
     Datagram dobject = dc.newDatagram(b, b.length);
     dc.send(dobject);
     System.out.println("Addr:" + dobject.getAddress());
     System.out.println("Well Done!");
} catch (IOException e) {
    System.out.println(e.getMessage());
} catch (Exception e) {
    System.out.println(e.getMessage());
} finally { 
    if (dc != null) {
        try {
            dc.close();
        } catch (Exception f) {
            System.out.println("Failed to close Connector: " + f);
        }
    }
}

3 ответа

Доступ к сети на BlackBerry далеко не кажется очевидным с точки зрения разработчика. Либо необходимо указать способ подключения в URL-адресе, либо устройство должно иметь правильные параметры APN в "Параметры"> "Дополнительные параметры"> "Параметры TCP". Вы можете попытаться найти их и ввести, чтобы увидеть, работает ли это.

UDP требует, чтобы APN был установлен в Connector.open():

(DatagramConnection) Connector.open("udp://<host>:<dest_port>[;<src_port>]/<apn>[|<type>][;tunnelauthusername=<apn username>;tunnelauthpassword=<apn password>]");

Для получения дополнительной информации об этом проверьте разъем

Он отлично работает на симуляторе без APN, потому что на симуляторе нет APN, но вам нужно на реальном устройстве.

Я могу думать о двух возможностях:

  1. UDP является optional в спецификации J2ME - так что, возможно, Blackberry не поддерживает его.
  2. Сеть, в которой находится устройство, может не поддерживать его, и устройство может обнаружить это и сообщить об этом за исключением.
Другие вопросы по тегам