博航社区

 找回密码
 立即注册博航社区

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 6858|回复: 0
打印 上一主题 下一主题

安卓开发使用UDP接收数据 [复制链接]

Rank: 4

跳转到指定楼层
楼主
发表于 2015-8-3 11:25:49 |只看该作者 |倒序浏览
分享到:

相比于有连接的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类来包装一段申请的数组,需要发送的时候,将数据写入到这段内存当中即可。





分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0 转发到微博

使用道具 举报

Archiver|手机版|谷歌地图|百度地图|官网地图|淘宝链接|博航智能圈 - ARM嵌入式AI物联网IOT机器人

GMT+8, 2024-4-27 13:18 , Processed in 0.037620 second(s), 6 queries , Gzip On, Memcache On.

club.broadon.net

© 2007-2012 BroadOn

回顶部