APP下载

基于NFC的P2P文件传输系统研究

2019-02-06岳佳欣

重庆理工大学学报(自然科学) 2019年12期
关键词:服务器端蓝牙链路

岳佳欣,王 忠

(1.四川电影电视学院,成都 610036;2.四川大学 电气信息学院,成都 610065)

基于NFC的P2P文件传输系统将NFC、蓝牙技术结合,可实现2台智能移动终端之间文件的快速互传,优化2台NFC设备之间的P2P通信方案。NFC P2P通信是Android Beam技术的应用,APP采用基于市场占有率最高的Android系统进行开发[1]。NFC论坛定义的P2P通信模式可支持2台NFC设备之间的双向交互,实现数据信息点到点传输[2-3]。传输的文件包括图片、视频、音频、程序、APK等[4]。在P2P通信模式下,参与通信的2台NFC设备分别称为发起设备(initiator)和目标设备(target)。initiator和target之间可以相互转换,NFC P2P传输速率有106、212、424 kbit/s[5]。由于传输速率的限制,P2P通信适合小文件的传输,在传输过程中,2台NFC设备必须保持在通信距离范围(<4 cm)内,否则通信链路中断,文件传输失败。为了提高文件传输速率,增大通信距离,NFC P2P文件传输系统实现2台NFC设备之间快速配对,然后使用蓝牙技术实现数据传输[6]。

1 系统概述

P2P通信模式是NFC技术三大工作模式之一。在该模式下,2台NFC设备之间可以进行点对点数据通信。NFC P2P通信也被称为Android Beam技术。本系统采用Android Beam实现2台智能移动终端之间通信链路的建立,采用蓝牙技术实现文件之间的互传。

NFC技术是近距离高频无线电通信技术,其基于无线电射频识别技术[7-8]。NFC技术允许2台设备之间、设备和NFC标签之间在小于4 cm的通信距离内进行数据传输,工作频率为13.56 MHz,工作原理采用电磁感应耦合技术[9]。NFC电磁感应耦合系统及等效电路如图1所示。

在NFC系统中,若设备依靠自身RF场提供的能量激活通信,则称为主设备(active device);若设备依靠其他设备的RF场提供能量并响应,则称为从设备(passive device)。发射器(initiator)和应答器(transponder)之间进行数据交互时,要求至少有一方为主设备[10]。

图1 NFC电磁感应耦合系统及等效电路

2 系统具体设计

2.1 系统架构

P2P文件传输系统的设计包括initiator与target两部分。首先要为2台NFC智能移动终端选定Initiator和Target的角色。当2台NFC手机触碰时,链接开始建立,选定的文件通过蓝牙技术从Initiator传向Target。当2台NFC智能移动终端互换角色时,文件可反方向从新的Initiator传向新的Target。P2P文件传输系统架构如图2所示。

图2 P2P文件传输系统架构

2.2 P2P通信协议

NFC P2P协议栈的最高层是逻辑链路控制(LLC)层,该层使用的协议是LLCP。简单NDEF交换协议(simple NDEF exchange protocol,SNEP)紧接LLC层,它支持2个NFC设备之间直接交换NDEF消息。protocol binding使得NFC可以支持其他高层次且用途广泛的协议。othere protocols中常用的是conection handover protocol(CHP)[11]。P2P文件传输系统基于SNEP开发,NFC P2P协议栈如图3所示。

图3 NFC P2P协议栈

LLCP基于IEEE 802.2的规范定义了OSI第二层协议。LLCP可以更好地支持小应用的有限数据传输,例如交换名片或相互识别磁条卡号码等。SNEP专为P2P模式设计,其目的是在通信过程中使用NDEF消息交换信息。SNEP是一种面向链接的数据传输协议,它的服务端口号为0x04,服务名为“urn:nfc:snep”。SNEP的工作方式是Request/Response。首先,SNEP客户端向SNEP服务器端发送SNEP Request消息,请求服务器端处理;然后,SNEP服务器端向SNEP客户端回复SNEP Response,告知客户端处理结果。

2.3 P2P通信交互过程

当2台NFC设备都开启NFC功能并进入有效通信距离时,它们的LLC模块将进入链路激活阶段(link activition)。在此阶段中,2台NFC设备分别扮演initiator和target的角色。首先,initiator向target发送prameter exchang(PAX)数据包,该数据包用于交换2台NFC设备LLC层的配置信息。target收到PAX包后进行相应的处理,处理完成后将自己的LLC层配置信息发送给initiator。当initiator检测到target的LLC层参数配置正常时,双方逻辑链路建立成功,可正常工作。当2台NFC设备超过有限通信距离范围时,link deactivition触发,链路断开[12]。link activition工作流程如图4所示。

图4 Link Activition工作流程

链路被激活后,2台NFC设备之间先建立面向链接的关系,然后再进行数据交互。客户端通过CONNECT包向服务器端发起链接请求。当服务器端对CONNECT包处理成功后,它向客户端回复connection complete(CC)包,此时链接关系建立成功。此后,客户端和服务器端可通过information包和receive ready(RR)包来传递数据。面向链接工作流程如图5所示。

图5 面向链接工作流程

当2台NFC设备之间通信链路建立后,系统快速连接蓝牙服务。由于Android平台对蓝牙通信协议提供了完整的封装,本系统直接调用Android提供的接口实现蓝牙传输的服务。

3 系统实现方法

API 14中NFC P2P通信被称为Android beam,它允许2个Android设备之间进行简单的数据对等交互。当initiator和target两台设备在NFC通信范围内,用户选定要传输的信息,然后触碰UI界面,信息从initiator传到target。

通过调用setNdefPushMessage()或setNdef-PushMessageCallback()方法,APP启用Android Beam。setNdefPushMessage()方法把接收到的NdefMessage对象作为一个消息设置给Beam。当2台设备在NFC通信距离范围内,消息会自动发。setNdefPushMessageCallback()方法接收包含createNdefMessage()方法的回调。当Android智能移动终端在发射数据的范围以内时,该回调方法会被调用。

1个Activity每次只能推送1条NDEF消息,若2种方法同时使用,setNdefPushMessageCallback()方法的优先级要高于setNdefPushMessage()方法。

在启用Android Beam时,首先需要创建一个包含NdefRecord的NdefMessage对象,该NdefMessage准备被推送到另1台设备上,然后调用带有NdefMessage类型参数的setNdefPushMessage()方法,或者是在Activity的onCreate()方法中调用setNdefPushMessageCallback方法,目的是用来传递实现NfcAdapter.CreateNdefMessageCallback接口的对象。

在本文中,使用Android Beam技术实现2台NFC设备的快速配对,当通信链路建立后,系统连接蓝牙服务。由于Android平台提供了对蓝牙通信协议完整的封装,因此直接调用接口,定义类Bluetoothservice.java实现蓝牙传输的服务。开启同意接收线程AcceptThread()后,建立一个已连接的单线程ConnectedThread(),通过read()方法传输数据,通过cancel()方法取消传输。

4 系统测试结果

4.1 测试环境

在P2P文件传输系统测试中,通信是双向的,因此选用NFC平板电脑和NFC手机用于P2P测试。P2P文件传输系统测试工具如表1所示。

表1 P2P通信模块测试工具

4.2 测试结果与分析

在NFC手机和NFC平板电脑上分别安装P2P文件传输APP,首先选择手机作为Initiator,平板电脑作为Target。进入APP,NFC平板电脑上的APP不启动,保证2台设备都处于非锁屏状态。该系统APP主界面如图6所示,界面4个按钮分别用于获取本机的视频、音频、图片和文件列表。点击按钮选择所要传输的文件(例如进入音频列表,选择第1个音频为待传输文件,本机音频列表界面如图7所示)。将NFC手机和NFC平板电脑的线圈感应区域靠近,用手触发NFC手机屏幕,音频文件便可从NFC手机传向NFC平板电脑,P2P通信测试过程如图8所示。

图6 P2P通信APP测试界面

图7 本机音频列表界面

图8 P2P通信测试过程图

在文件传输过程中,由于采用的是蓝牙技术,因此可将NFC手机与NFC平板电脑移开,不会影响文件传输过程。P2P通信文件传输过程截图如图9所示,可以看到NFC手机提示栏显示“正在传输信息”,NFC平板电脑提示栏显示“正在接收Beam内容”。文件接收成功后,可在NFC平板上播放所传的音频文件。

图9 P2P通信文件传输过程截图

将上述操作反方向再进行一遍,NFC平板电脑上选取的文件成功传至NFC手机。这说明2台NFC设备之间已通过双向P2P通信测试。使用NFC P2P文件传输系统时,只需将用于通信的2台NFC设备触碰便可实现通信链路的建立,免去蓝牙复杂的连接匹配过程。而采用蓝牙技术传输数据可提高传输速率,避免移开2台NFC设备时造成的通信过程中断的问题。

5 结束语

本文中,P2P文件传输系统采用NFC技术实现设备的匹配连接,利用蓝牙技术实现数据互传。该系统充分利用了NFC与蓝牙技术各自的通信与传输优势,将NFC技术与蓝牙技术有机结合,成功实现了P2P文件较远距离的传输,为智能移动终端文件方便快捷地传输提供了高效的解决方案。

猜你喜欢

服务器端蓝牙链路
蓝牙音箱的直线之美
天空地一体化网络多中继链路自适应调度技术
Linux环境下基于Socket的数据传输软件设计
基于星间链路的导航卫星时间自主恢复策略
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
基于3G的VPDN技术在高速公路备份链路中的应用