博航智能圈

标题: 安卓开发使用UDP接收数据 [打印本页]

作者: NJHQYJ    时间: 2015-8-3 11:25:49     标题: 安卓开发使用UDP接收数据

相比于有连接的TCP协议来说,无连接的UDP协议也拥有着很多的使用环境。当对数据的安全性要求不是很高或者速度要求比较高的时候,我们要使用UDP协议来实现。下面我们来封装一个UDP的工具类来通过网络接收数据。

private DatagramSocket udpSocket = null;

private DatagramPacket udpPacketR = null;

private DatagramPacket udpPacketW = null;

private WifiManager wifiManager = null;

首先我们要定义出需要的通信变量。

try {

udpSocket = new DatagramSocket(TotalData.routePort);

udpSocket.setReceiveBufferSize(1024);

} catch (SocketException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

通过系统的构造函数来创建新的socket对象并设定对应的端口号和接受缓冲的大小。

try {

udpPacketR = new DatagramPacket(data, data.length,

InetAddress.getByName(TotalData.routeIp),

TotalData.routePort);

udpSocket.receive(udpPacketR);

log.E("---" + printHex(data));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

log.E("%%%%% wifi read() data is error !!!! %%%%%");

return null;

}

当接收数据的时候,我们需要一个DatagramPacket类来包装一段事先申请的内存空间来实现接收数据。

try {

udpPacketW = new DatagramPacket(data, data.length,

InetAddress.getByName(TotalData.routeIp),

TotalData.routePort);

udpSocket.send(udpPacketW);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

log.E("%%%%% wifi write() data is Exception !!!! %%%%%");

return false;

}

发送数据的时候也是类似,使用DatagramPacket类来包装一段申请的数组,需要发送的时候,将数据写入到这段内存当中即可。










欢迎光临 博航智能圈 (http://www.broadon.net/club/) Powered by Discuz! X2