黑莓核心开发向导 - 2.2.4 使用数据报连接

本文介绍如何在黑莓设备上使用数据报进行网络通信。主要内容包括数据报连接的建立、数据的发送与接收流程,以及异常处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据报是应用程序通过网络发送的独立数据包。Datagram对象是作为数据报载体的字节数组的封装。使用数据报连接来发送和接受数据报。

为使用数据报连接,你必须使你的设备连接到无线网络,包括一个GPRS网络的接入点(APN)。使用UDP连接需要你与服务提供商紧密合作。确定你的服务提供商支持UDP连接。

为使用数据报连接,

导入如下类:
net.rim.device.api.system.CoverageInfo
javax.microedition.io.Connector
java.lang.String

导入如下接口:
net.rim.device.api.system.CoverageStatusListener
javax.microedition.io.DatagramConnection
javax.microedition.io.Datagram

使用net.rim.device.api.system包中的CoverageInfo类和CoverageStatusListener接口来确认黑莓设备在无线网络覆盖区域内。
调用Connector.open(),指定udp为协议并将返回的对象转型为DatagramConnection对象来打开一个数据报连接。

(DatagramConnection)Connector.open("udp://host:dest_port[;src_port]/apn");

其中:
host 是点分ASCII十进制数格式的主机地址。
dest-port 是主机地址的目标端口 (接收消息时是可选的)。
src-port 本地源端口 (可选)。
apn 是字符串格式的网络APN。

5.为在指定主机上的所有端口接收数据报,省略连接字符串中的目标端口。

6.为在非GPRS网络中打开数据报连接,指定源端口,包括结尾的斜线。例如,一个CDMA网络连接的地址可能是:
 udp://121.0.0.0:2332;6343/.
你可以在同一个端口发送和接收数据报。

7.为创建数据报,调用DatagramConnection.newDatagram()。
Datagram outDatagram = conn.newDatagram(buf, buf.length);

8.为数据报添加数据,调用Datagram.setData(). byte[] buf = new byte[256];
outDatagram.setData(buf, buf.length);

9.为在数据报连接上发送数据,在数据报连接上调用调用send()
 conn.send(outDatagram);

如果一个黑莓Java应用程序尝试在一个数据报连接上发送数据报,而接收者没有在指定的源端口监听,将会抛出IOException。确保黑莓Java应用程序实现了异常处理。

10.为在数据报连接上接收数据,在数据报连接上调用receive()。receive()方法将阻塞直到收到一个数据包。使用一个定时器来在未收到回应时转发请求或关闭连接。
byte[] buf = new byte[256];
Datagram inDatagram = conn.newDatagram(buf, buf.length);
conn.receive(inDatagram);

为从数据报中提取数据,调用getData()。如果你知道接受的数据的类型,将数据转换为适当的类型。
String received = new String(inDatagram.getData());

关闭数据报连接,在输入流、输出流和数据报连接对象上调用close()。
conn.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值