BlackBerry 上的 UDP 发送错误

发布于 2024-07-12 05:40:23 字数 791 浏览 5 评论 0 原文

我正在为黑莓编写网络应用程序。 此代码在模拟器上是正确的,但在设备上不起作用。 当我在模拟器上运行应用程序时,我的服务器收到消息,但当我在设备上运行它时,我收到异常,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);
        }
    }
}

I am writing network application for Blackberry. This code is correct on the simulator but not working on a device. When I run my application on the simulator, my server recieves the message but when I run it on a device, I get an Exception, not IOException, with message "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);
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

昔梦 2024-07-19 05:40:23

从开发人员的角度来看,黑莓上的网络访问绝非完美无缺。 您必须在 URL 中指定如何建立连接,或者设备必须在“选项”>“选项”中具有正确的 APN 设置。 高级选项> TCP 设置。 您可以尝试找到这些并输入它们以查看是否有效。

Network access on the BlackBerry is far from seemless from a developer's point of view. You either have to specify how the connection should be made in the URL, or the device has to have the correct APN settings in Options > Advanced Options > TCP Settings. You could try finding those and entering them to see if it works.

似狗非友 2024-07-19 05:40:23

UDP 要求在 Connector.open() 中设置 APN:

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

有关详细信息,请查看 连接器

它在没有 APN 的模拟器上工作正常,因为模拟器没有 APN,但您需要在真实设备上。

UDP requires the APN to be set in the Connector.open():

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

For more info on that check out the Connector

It works fine on the simulator w/o APN because the simulator doesn't have an APN, but you need on a real device.

青衫负雪 2024-07-19 05:40:23

我可以想到两种可能性:

  1. UDP 在 中是可选 J2ME 规范 - 所以黑莓可能不支持它。
  2. 设备所在的网络可能不支持它,设备可以检测到这一点,并报告异常。

I can think of two possibilities:

  1. UDP is optional in the J2ME spec - so maybe the Blackberry doesn't support it.
  2. The network the device is on might not support it, and the device can detect this, and reports it with an exception.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文