Ошибка отправки 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, но вам нужно на реальном устройстве.
Я могу думать о двух возможностях:
- UDP является
optional
в спецификации J2ME - так что, возможно, Blackberry не поддерживает его. - Сеть, в которой находится устройство, может не поддерживать его, и устройство может обнаружить это и сообщить об этом за исключением.