2009-01-18 81 views
1

我正在为黑莓编写网络应用程序。此代码在模拟器上正确,但不适用于设备。当我在模拟器上运行我的应用程序时,我的服务器收到消息,但是当我在设备上运行它时,出现异常,not IOException,消息“NULL”。黑莓的UDP发送错误

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); 
     } 
    } 
} 
+0

您遇到的确切异常是什么? – roryf 2009-01-20 18:29:15

回答

-1

我能想到的两种可能性:

  1. UDP是在J2ME specoptional - 所以也许黑莓不支持它。
  2. 设备所在的网络可能不支持该设备,设备可以检测到该情况并报告异常情况。
2

从开发人员的角度来看,黑莓手机上的网络访问远不算什么。您必须指定如何在URL中进行连接,或者设备必须在选项>高级选项> TCP设置中具有正确的APN设置。你可以尝试找到那些并输入它们以查看它是否有效。

1

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

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

欲了解更多信息对检查出的Connector

它工作正常,在模拟器W/O APN因为模拟器没有按”没有APN,但你需要一个真正的设备。