一种基于Wi-Fi直连的自组织即时通信方法

文档序号:7817780阅读:292来源:国知局
一种基于Wi-Fi直连的自组织即时通信方法
【专利摘要】本发明公开了一种基于Wi-Fi直连的自组织即时通信方法。本方法为:1)智能移动终端启动Wi-Fi直连网络,搜索周围的组并加入;如果未搜索到组或未能加入组,则搜索周围的智能终端并与其建立组;其中组长具有P2P设备,组长将组员的设备信息保存到一设备信息表,并在组内广播;2)组员定期向组长发送包含自身状态信息的心跳包,组长根据收到的该心跳包更新对应组员的状态和时间戳,并反馈一确认信息;3)组员或组长需要同组内的目标成员进行通信时,从本地保存的设备信息表中选取该目标成员的IP地址发起连接请求,连接成功后进行通信。本发明在不接入蜂窝网基站或WLAN接入点的情况下,能够实现智能终端之间的近距离即时通信。
【专利说明】—种基于W1-Fi直连的自组织即时通信方法

【技术领域】
[0001]本发明涉及一种近距离智能移动终端之间即时通信(包括语音、图像或数据等)方法,通过在近距离形成自组织网络,即可进行通信的方法,属于通信领域。

【背景技术】
[0002]即时通信(IM, Instant Messaging),是指通信节点通过网络来传递消息,传递信息的方式有多种,如文件共享、音频、视频等。目前市场上存在多种即时通信软件,如QQ,WhatsApp,微信等。一方面,这些頂系统丰富了人们的生活,给普通用户之间通讯带来了极大的方便。另一方面,不管是国外的WhatsApp还是国内的QQ、微信,它们面临着共同的问题和挑战,即这些应用都过分依赖传统互联网,即需要连接蜂窝基站或WLAN接入点进行联网。当涉及到与他人(尤其是地理位置比较近的人)共享资源或通信时,例如在一起的朋友分享照片、视频、音乐或朋友之间的社交、游戏、互动,人们还需要接入网络基础设施,启动頂软件再进行共享或通信。这是非常繁琐且不方便,有时费用还很昂贵。再加上现在人们常常在移动终端中运行几十个访问互联网的应用程序,导致蜂窝网络流量负担过重,t匕传统语音服务更消耗资源。而且这种服务并不总是可用的,人们有时连接不到蜂窝基站或WLAN接入点,如音乐厅、厂房、隧道、博物馆等,这些建筑结构可能会阻碍蜂窝基站或WLAN接入点的接入,使它们不可用,尤其是在偏远地区(如没有蜂窝网覆盖)或突发情况下(如自然灾害)网络无法正常使用。还有些时候,人们根本不需要连接到蜂窝基站或WLAN接入点,在某些场景下,只是建立临时即时通信,而且可能以后不再使用。因此在这种情况下,人们之间相互通信、连接交换数据就成了一个急需解决的问题。
[0003]上述问题可以通过使用终端智能操作系统(如Android,苹果1S)的W1-Fi直连网络在两个或更多的智能移动终端之间建立Ad hoc网络来解决。Ad Hoc网络是一种移动多跳分布式自组织网络,它不依赖固定的基础设施,没有中心控制节点,具有自组织性,可以在没有常规基础设施支持的情况下进行灵活方便的通信。随着无线通信技术的迅速发展,智能终端中加入了 W1-Fi直连功能,设备间可以方便灵活地组建Ad Hoc网络。
[0004]W1-Fi直连是一种传统Wi_Fi802.11客户端到接入点的点对点(P2P)实现,允许设备创建移动ad-hoc网络,进行高速数据传输。伴随W1-Fi直连技术出现,人们对点对点无线通信需求日益增加,例如多人游戏、资源共享、语音通信等。对于需要在用户之间传输数据的应用而言,这一技术无疑是十分有价值的。但是时至今日,这项技术并没有普及起来。从技术角度来讲,因为W1-Fi直连是一种“纯软件”技术,现存的任何W1-Fi硬件都可以通过软件升级来获得W1-Fi直连功能。但是并不是所有W1-Fi硬件提供商提供这种升级服务。再加上W1-Fi直连只是解决了设备之间怎么连接的问题,没有第三软件的支持什么也做不了。


【发明内容】

[0005]针对现有技术中存在的技术问题,本发明的目的在于提供一种基于W1-Fi直连的自组织即时通信方法。本发明在不接入蜂窝网基站或WLAN接入点的情况下,能够实现智能终端之间的近距离即时通信(语音、图像或数据)。尤其在恶劣网络环境或没有网络基础设施(蜂窝网)的条件下,人们更需要这样的通信模式。
[0006]本发明的技术方案为:
[0007]一种基于W1-Fi直连的自组织即时通信方法,其步骤为:
[0008]I)智能移动终端启动W1-Fi直连网络,搜索周围的组并选择要加入的组;如果未搜索到组或未能加入搜索到的组,则发出探测请求搜索周围的智能终端并与其建立组;所述智能移动终端为具有W1-Fi或W1-Fi直连功能的设备;所述组具有一组长及与其无线通信连接的若干组员,其中组长具有P2P设备,组员为所述智能移动终端;组长将组员的设备信息保存到一设备信息表,并在组内广播一包含该设备信息表的消息给组员;
[0009]2)组员定期向组长发送包含自身状态信息的心跳包,组长根据收到的该心跳包更新所述设备信息表中对应组员的状态和时间戳,并反馈一确认信息给对应的组员;
[0010]3)组员或组长需要同组内的目标成员进行通信时,从本地保存的设备信息表中选取该目标成员的IP地址发起连接请求,连接成功后进行通信。
[0011]进一步的,所述组的建立方法为:当发起探测请求的所述移动智能终端搜索到周围一个或多个所述移动智能终端时,所述移动智能终端之间相互交换设备信息;然后具有P2P设备的移动智能终端通过三次握手协商出一组长,其中每次握手信息中发送一意图值和一仲裁位,选取意图值最大值为所建组的组长;当两个具有P2P设备的移动智能终端的意图值相等时,根据仲裁位确定所建组的组长。
[0012]进一步的,所述意图值为一经验值,即所述移动智能终端充当组长的次数。
[0013]进一步的,所述意图值为所述智能移动终端的硬件加权值,所述如硬件加权值=剩余电量X 50 % +剩余RAM X 30 % +剩余ROM X 20 %。
[0014]进一步的,所述意图值为所述智能移动终端的信道质量指示符CQI。
[0015]进一步的,所述设备信息包括组员的设备号、IP地址和资源参数。
[0016]进一步的,当组员设定时间内容未收到组长反馈的所述确认信息,则向组长发送一 Ask信息,来检察组长员是否在组内;如果还在组内,则组长立即发送确认信息给该组员;如果不在组内,则组员之间重新协商选取一组长。
[0017]进一步的,当组长设定时间内未收到组员的所述心跳包,则向该组员发送一 Ask信息,来检察该组员是否在组内;如果还在组内,则该组员立即发送所述心跳包给组长;如果不在组内,则组长向其它组员广播通知信息更新该组员的状态。
[0018]进一步的,当组员需要退出组时,该组员向组长发送一离开消息,组长收到该离开消息后更新其设备信息表并广播通知组内其他组员,组员收到该广播通知后更新自己的设备信息表;当组长准备退出组时,组长广播一组长转移消息给组员,组员收到该组长转移消息后进行协商选取一组长。
[0019]进一步的,所述智能移动终端包括一用来收发文件消息和控制命令的端口,一用于语音通信的端口 ;其中,采用UDP协议进行语音通信:
[0020]发送方首先创建一语音数据采集线程和一发送线程,然后所述语音采集线程判断布尔型数据isRecord是否为真,如果为真,则将采集的语音数据发送到设定的栈和缓冲区,关闭语音采集线程;然后所述发送线程判断isStartSend是否为真,如果为真,则从语音采集线程存入语音数据的缓冲区读取数据,采用UDP协议传输给接收方,关闭发送线程;
[0021]接收方首先创建一接收语音线程和一播放线程,然后所述接收语音线程判断布尔函数isReceive是否为真,如果为真,则通过UDP协议开始接收数据并把数据存放设定缓冲区后,关闭语音接收线程;然后所述播放线程判断函数isCall是否为真,如果为真,则从指定的缓冲区读取数据,读取完整后从听筒中播放,播放完毕后关闭播放线程。
[0022]本发明的通信方法是针对不接入蜂窝网基站或WLAN接入点场景下,通过W1-Fi直连技术实现智能移动设备之间的即时通信。它能发现一定范围内的用户并连接,实现用户之间在线实时通讯交流与文件共享。在这里,先介绍W1-Fi直连网络通信中会用到的专业名词:
[0023]用户设备(UE):UserEquipment,满足W1-Fi或W1-Fi直连功能的设备。
[0024]组(Group):允许通过W1-Fi接口分享W1-Fi直连网络连接的一组移动设备。一个P2P组功能类似于一个基础的BSS (Basic Service Set,基础服务集合)。
[0025]组员(GC):Group Client, P2P组的成员,在同一个组内与组长网络相连的设备。
[0026]组长(GO)=Group Owner, P2P 组所有者,决定每个 P2P 组的 SSID(Service SetIdentifier,服务集标识),并选择P2P组的工作频道。只有具有W1-Fi直连功能的设备才能充当GO角色。
[0027]P2P设备:具有W1-Fi直连功能在组中充当组成员的设备。
[0028]传统设备:具有W1-Fi认证的传统W1-Fi设备,在组中只能充当组员角色。
[0029]本发明设计共分成四个部分,即组操作、节点操作、数据传输和语音通信。在本发明中,借助软AP的理念,进一步规范了 GO的主要职责和作用。这样可以减少网络的负载,增大网络资源利用率,是本发明主要创新之一。在组操作过程中,GO主要负责组的形成与解散,监控组内组员状态,并随时广播组员状态变化。在节点操作过程中,GO负责节点的加入与离开,以及组员设备信息的传递。为此,本发明的技术操作规范设计如下:
[0030]A.组操作
[0031]组操作包括组的形成、组的维持与组的解散。在本发明中,第一阶段是要让UEs形成一个组。组形成过程主要与W1-Fi直连规范中定义相关。在组维持过程中,本发明设计了一个心跳机制来加强组成员之间的联系。当遇到某些情况,可以让组解散,详细情况在本文描述的组解散过程具体给出。
[0032]组形成:组的形成过程介绍如下:首先用户通过开启传统W1-Fi扫描来启动W1-Fi直连,W1-Fi扫描可以搜索现存的组。其中因为GO使用智能移动设备OS提供的广播接收器接收intent广播,能够响应用户感兴趣的事件。如果设备没有搜索到组的存在或不能加入现有的组,那么它开始在两种状态之间转换。一种是搜索状态,发送探测请求来进行搜索其他节点;另一种是监听状态,设备监听其他节点发出的探测请求。当UE接收到一个探测响应时,就可以与对方进行GO协商,建立使用W1-Fi保护设置的安全通信。最后,通过DHCP (Dynamic Host Configurat1n Protocol,动态主机配置协议)交换来进行IP地址配置等。
[0033]但是在这个过程还有一个问题就是GO角色协商。规范中规定:为了决定哪个设备成为P2P G0, P2P设备会在三次握手中发送一个GO意图值的数字参数,并且申报最大值的设备成为P2P G0。当两个设备声明相同GO意图值时,为了防止冲突,在GO协商请求中设置一个仲裁位,每次GO协商请求发送时,仲裁位被随机设置在当中。但是规范中并没有规定怎么定义GO意图值,实际生活中是通过谁邀请谁充当的手动操作来实现。这样做是非常不方便,而且很可能造成多个设备邀请冲突,设备连接失败。本发明中提出了以下几个方案来定义这个GO意图值,实现GO协商的自动操作,这样缺少人为干预,使连接过程变得更加便利。方案如下:
[0034]方案一:意图值等于经验值。就是使用设备充当GO的次数来定义GO意图值。设备充当GO次数越多,表明此设备经验越高,意图值越大。如果两个设备经验值相等,则通过最近充当GO时间来决定意图值大小。如果两个设备都没有经验,即经验值为零,则两个设备各产生一个随机数比大小。随机数大的,就直接充当G0。
[0035]方案二:意图值等于硬件加权值。就是使用设备硬件资源来定义GO意图值。如使用加权公式:硬件加权值=剩余电量X 50%+剩余RAMX 30% +剩余ROMX 20%,这里也可采用其他加权公式。
[0036]方案三:意图值等于CQI (Channel Quality Indicator,信道质量指示符)。信道质量指示符(CQI)是无线信道的通信质量的测量标准。CQI能够是代表一个给定信道的信道测量标准所谓一个值(或多个值)。通常,一个高值的CQI表示一个信道有高的质量,反之亦然。
[0037]以上三个方案各有利弊,第一个方案最为简单,只需在现有代码中增加一个count变量来记录GO次数即可。但是第一个方案也是三个方案中最不公平的方案。因为count受外界因素影响最大,而且不能根据场景动态改变。第二种方案复杂一些,但却能最大利用设备硬件资源。让硬件级别高的设备充当G0,更利于组的运行。而且随着硬件资源的变化,GO也可以动态变化。第三个方案比前面的都要复杂,仅是想要得到CQI的值就需要综合许多外界条件。但这个方案最能利用信道资源,实现数据快速传输。
[0038]组维持:一个组想要持续高效地工作,就要时刻注意组内成员变化情况。一旦组成员出现异常,GO能够及时快速地解决问题,这就需要GCs与GO之间保持信息一致性。组内UE有时会由于各种紧急突发情况离开组,而其它UEs并不知道,造成消息的滞后。结果导致其它UEs向该成员发送数据时,因为无法得到响应而造成资源浪费。本发明中设计一个心跳包,它主要作用是宣示组成员状态。GC周期性的向GO发送包含Activity消息的心跳包来证明自己还在组内,GO反馈GC —个OK消息,并更新设备信息列表中的设备信息和时间戳。如果一个周期过后,GO没有收到GC发送Activity消息,就会向该GC发送Ask信息,来检察该UE是否在组内。如果GC还在组内,它会立即发送Activity消息给GO ;如果GC缺席,GO及时向其它GCs广播通知信息。心跳包的作用不仅可以探测到组内GCs状态信息,还可以探测组内GO状态。GO如果因为非正常情况离开组,GCs也能够通过心跳包快速察觉到。因为GC向GO发送Activity信息,一个周期内没有收到GO反馈的确认OK消息,同样也会向GO发送一个Ask消息。
[0039]组解散:本发明中把组解散情况归纳为以下几种:1)组内UEs之间已经不需要再进行通信,GO广播解散通知,组正常解散。2)组内UEs少于2个或组内没有P2P设备,组自动解散。3)组发生异常,整个组瘫痪或崩溃不能正常工作,组被拆除被迫解散。当承担GO角色的UE离开组时,组不一定会解散,除非组内没有W1-Fi直连设备。组不解散就需要一个GO维持组工作,这时就会发生GO转移。当GO准备离开时,会广播GO转移消息。GCs收到消息后,进行GO协商,选出新的G0。当新GO选出来后,新GO发送一个确认消息给旧G0。旧GO收到消息后离开组。如果GO因突发事件离开,GCs通过心跳包来发现GO的缺席,再进行GO协商选出新的G0。
[0040]B.节点操作(UE)
[0041]在本发明中,UE可以在任何时间加入或离开。这是因为UE具有移动性,而且UE无需改变现有的协议,只需要一些简单的操作就可以实现。组形成之后,通信的连接需要节点操作。在本节中,将会详述本发明中节点操作的加入、创建连接、关闭连接和离开过程。
[0042]I)加入。UE在组形成过程中有一个搜索现存组的过程。如果搜索到之后,UE就会向组的GO发送加入请求,并在请求中添加自己的设备信息,包括一些设备参数、资源信息等等。GO根据当前网络情况,再结合UE的设备信息来决定是否让UE加入。一旦组长拒绝UE加入,UE搜索其它节点。UE成功成为组内一员后,GO把UE设备信息存储到本地数据库中,并广播通知消息,告知所有其它组员UE已成功加入该组。GO还会把UE设备信息广播给其它组员,消息包含设备号、IP地址、资源参数等等,并且把组内其他成员设备信息复制一份发给UE。
[0043]2)建立连接。UE成为组员后,进入监听状态。如果UE (源设备)想要和特定某个用户(目标设备)进行通信,只需查询本地设备信息列表,查找目标设备的设备ID,IP地址等信息。本发明中是根据IP地址发送信息,这么做的好处是不需要增加操作使用现有的TCP/IP协议,将来也可以扩展到IPV6中使用。查找成功后,向GO发送连接请求信息并等待目标响应。GO把连接请求转发给目标用户,再把收到目标用户反馈的请求响应后转发给UE,连接成功,否则失败。由于无线局域网中不支持组播,如果用户选择与多个目标用户进行通信,系统就会发送多个数据包。
[0044]3)断开连接。UE在两种情况下会断开连接。一种是正常情况下,数据传输结束或短时间内不需要进行数据传输,UE向与它连接的设备发送断开连接通知消息。设备收到消息后,更新设备信息列表,然后发送一个确认消息来回应UE通知消息,连接正式断开。如果再想建立连接,可以重新调用连接方法。另一种是非正常情况下,UE突然停止工作或意外情况出现。与UE连接的设备会等待一段时间直到上一条信息的时间戳超时,设备默认连接断开,更新自己的设备信息列表。至于是什么原因导致连接的断开,UE不需要关心,也不予处理。
[0045]4)离开。UE因为移动性,可以随时离开一个组。当UE在正常情况下退出时,只需要发送一个离开消息给GO。GO接收消息后,更新设备信息列表,再广播通知给组内其它成员。组内成员收到消息后,更新设备信息列表,不再向UE发送任何信息。UE—旦广播离开消息后,就不接收组消息,直接离开。当UE在非正常情况下退出时,GO会在一个周期后,根据心跳机制察觉该UE的缺席。
[0046]C.数据传输
[0047]在本发明中,语音数据的传输过程实质上是一个互逆过程。设备将自身通过话筒采集到的语音数据,通过socket从已经建立好的网络通信链路发送到目标设备上。目标设备收到语音数据后,通过自身的听筒播放出来,接下来重点介绍数据传输过程。
[0048]设备上的听筒成功采集语音数据之后,把语音数据放入到特定的缓冲区。在发送语音数据之前发送一个通知,让接收设备做好接收数据准备,在收到接收方返回的确认消息后,使用socket实现语音数据的发送过程。因为无线网络环境不稳定,TCP协议会增加网络带宽的消耗。再加上,人耳能够承受一定的话音扰动,允许语音通信少量的丢包。UDP协议在通信之前无须建立连接,直接向对方发送,也不保证可靠性,对于语音流来说是可以充许的。而且本系统主要为即时通信,对实时语音通信的要求和呼叫响应的速度要求不高。所以本发明中的数据传输都采用UDP协议实现。接收方在收到发送方发来的发送通知后,做好接收准备,准备好之后向发送方发送一个确定消息。接收方通过UDP协议把接收到的语音数据放入在特定的缓冲区,语音数据接收完成之后才能通过听筒播放。
[0049]D.通信处理
[0050]对W1-Fi直连技术进行研究过程中,为了实现发明目的而开发相关应用程序。本发明在Android平台上开发,可以调用Android移动终端的话筒和听筒相关接口来完成语音的采集和播放。本发明的即时通信系统要求可以进行文件和语音数据的传输,可以用两个端口来区分这些通信。一个端口用来接收发送文件消息和控制命令,另一个端口用于语音通信。发送文件信息过程中,根据接收方的设备ID在列表中查找出对应的IP地址,利用IP地址和文件标识符直接生成UDP数据包发送出去就可。如果需要确认,可以在文本内容中告诉对方回复。要发送给多少用户就选择多少IP地址进行发送。语音通信就要复杂一些,由于是基于网络实现语音通话的功能,在应用层面引入了 VoIP技术。在现有的实时语音网络通信领域中,VoIP作为一个成熟的解决方案,囊括了语音压缩编码、数字音频分组转发、回声消除、应用层信令控制协议等技术,并已经得到广泛应用。VoIP的基本原理是通过语音压缩算法对语音数据进行压缩编码处理,然后把这些语音数据按IP等相关协议进行封装,语音报文经过IP网络传输到接收地,再把这些语音报文串起来,经过解码解压处理后,恢复成原来的语音信号,从而达到由IP网络传送语音的目的。
[0051]与现有的技术相比,本发明的积极效果为:
[0052]本发明提出了一种有效的基于W1-Fi直连的即时通信方法。在组操作过程中,我们把GO设定为软AP角色,这样可以减少网络的负载,增大网络资源利用率。用户根据需要,可以随时随地与附近的人进行通信,还可以进行资源共享。并且用户在通信过程中,由于无需使用到蜂窝基站,所以不会产生额外费用。此方法中数据还使用了 WPA2安全机制,可以保障用户的信息安全。

【专利附图】

【附图说明】
[0053]图1为基于W1-Fi直连智能移动终端之间通信过程示意图;
[0054]图2为语音数据传输框架示意图
[0055]图3为基于W1-Fi直连的Ad hoc网络智能终端之间通信系统的网络结构图。

【具体实施方式】
[0056]图1为基于W1-Fi直连智能移动终端之间通信过程示意图;
[0057]如图1所示,该方法包括步骤如下:
[0058]步骤S1.1:UE1为W1-Fi直连设备,当UEl想与附近的移动终端进行通信时,启动W1-Fi直连网络,搜索附近节点。经过短暂的几秒钟后,搜索到UE2节点,并与之形成一个组。因为本图是通信过程示意图,所以组形成过程省略(详细过程图可参阅组操作中组形成部分)。进入步骤S1.2 ;
[0059]步骤S1.2:UEI与UE2在组形成过程中相互交换设备信息,UEl根据意图向UE2发送连接请求,并进入步骤S1.3。
[0060]步骤S1.3:UE2根据自身设备资源再结合网络情况来决定是否响应请求。如果接受请求发送一个连接响应,进入步骤S1.4。否则结束此次通信。
[0061]步骤S1.4:UE1收到响应后,判断响应是否为真。如果为真,就与UE2建立连接,进入步骤S1.5。否则结束此次通信。
[0062]步骤S1.5:连接建立后,UEl就可以向UE2发送文件、语音或图像数据。发送文件或图像数据,只需要把文件或图像打包成UDP包,通过socket发送就可以了。而语音数据还需要在UEl中经过语音处理,处理完成之后再打包成类似文件的数据包发送给UE2。UE2收到此数据包拆封,再经过语音处理还原成语音数据,最后播放音频。传输完成后,进入步骤 S1.6。
[0063]步骤S1.6:双方通信完成,执行结束。
[0064]图2为语音数据传输框架示意图
[0065]发送方发送语音数据会创建两个线程,一个是语音数据采集线程,另一个是发送线程。图中使用的一些参数信息如下:
[0066]isRecord:判断语音数据是否完成的flag参数;
[0067]isStartSend:判断语音数据是否开始发送的flag参数;
[0068]isReceive:判断是否准备好接收主意的flag参数;
[0069]isCall:判断是否发起语音通话的flag参数;
[0070]语音采集线程工作过程如下:首先系统初始化语音采集,做一些相应准备工作,准备发送语音数据所需的栈和缓冲区等,准备工作完成后创建语音采集线程。在采集工作开始之前,系统会做个判断,如果布尔型数据isRecord为真,就会向指定的缓冲区存入从话筒采集到的音频数据。数据采集完成之后,关闭语音采集线程。
[0071]发送线程工作过程如下:系统发送语音数据之前,先初始化线程,然后判断isStartSend是否为真。如果为真,就从语音采集线程中存入语音数据的缓冲区读取数据。如果isStartSend为假,系统就会自动结束本次语音数据包的发送。数据读取完整后,通过UDP协议从已建立好的IP网络中传输给接收方。发送完成,关闭发送线程。
[0072]以上步骤都是在各自独立的线程控制下工作,各线程之间的工作相互独立,但其之间有一定的相关性。
[0073]接收方在接收语音过程中也会创建两个线程,分别为接收语音线程和播放线程。
[0074]接收语音线程工作过程如下:接收方先初始化语音接收,创建语音接收线程。然后系统判断布尔函数isReceive是否为真,如果为真说明系统已经做好数据接收准备,可以开始接收数据。如果为假,系统自动结束本次语音接收。接收方同样通过UDP协议接收语音数据,并把数据存放特定缓冲区。数据接收完成之后,关闭语音接收线程。
[0075]语音播放线程工作过程如下:系统首先初始化播放线程,然后判断函数isCall是否为真。如果为真,系统从指定的缓冲区读取数据,语音数据只有读取完整才能从听筒中播放。如果为假,系统自动结束本次播放。语音播放完成后,系统关闭播放线程。
[0076]上面所讲的语音接收、播放等都是不连贯性的活动,它们相互之间虽然有潜在的联系,但是又有各自的独立性,这种独立性需要另外引进多线程技术。多线程技术可以让这种不连贯性连贯起来,以此达到本系统的设计目的。
[0077]图3为基于W1-Fi直连的Ad hoc网络中智能移动终端之间通信系统的网络结构图;
[0078]根据图3所示实例,下面详细描述同一组内终端之间进行数据通信的流程。
[0079](I):图中GO想与GCl语音,GO就要与GCl先建立语音连接。首先,GO在自己的设备信息列表中查询GCl的设备信息(注:组内每个成员都有自己的信息列表,本图为了简便只标出了 GO与GC3的信息列表)。找到之后,先看看Gl的时间戳,判断Gl的状态,再根据IP地址发送通话请求。如果没有找到或Gl状态异常,就不能与之通信。GO就要换另外一个目标通话。
[0080](2):GC1收到GO的通话请求后,根据自身情况选择是否同意与GO进行语音通话。如果同意就发送通话响应给GO ;如果不同意就发送Refuse消息来拒绝请求。
[0081](3):G0收到GCl发送的通话响应,随即两个端点建立语音通信连接进行语音通话。因为是语音通信,所以需要分别在通信双方进行语音处理。在发送方发送音频数据之前对音频录制、压缩编码和回声消除等,最后把音频数据封装成UDP数据包,像文件数据传输一样传输出去。接收到音频数据的接受方,先把音频报文串起来,经过解码解压处理后,还原成语音信息即可。
[0082](4):GC3选择GO进行文本通信,首先它向GO发送文件请求。而GO不同意与GC3进行通信,GO向GCl发送Refuse消息拒绝其请求。GC3把目标转向GC2,向GC2发送文件请求。GC2接受了 GCl请求,返回一个文件响应。然后他们之间建立通信连接进行文件传输。传输完成之后,断开连接,结束操作。
[0083](5):在上述情况中,如果GO同意与GC3进行通信,那么GO向GC3发送文件响应建立连接。因为GO此时还保持与GCl的语音通信,所以会启动一个新进程与GC3进行文件通信。GO采用时间片的方法来轮流响应GCl与GC3。且依据GCl设备ID、IP地址、文件标识符与GC3的不同,两者不会产生信息干扰。
[0084](6):设备信息列表是组内每个设备存储在本地的数据库中。根据这张表,设备可以清楚其它设备情况,有利于设备进行通信。
【权利要求】
1.一种基于W1-Fi直连的自组织即时通信方法,其步骤为: 1)智能移动终端启动W1-Fi直连网络,搜索周围的组并选择要加入的组;如果未搜索到组或未能加入搜索到的组,则发出探测请求搜索周围的智能终端并与其建立组;所述智能移动终端为具有W1-Fi或W1-Fi直连功能的设备;所述组具有一组长及与其无线通信连接的若干组员,其中组长具有P2P设备,组员为所述智能移动终端;组长将组员的设备信息保存到一设备信息表,并在组内广播一包含该设备信息表的消息给组员; 2)组员定期向组长发送包含自身状态信息的心跳包,组长根据收到的该心跳包更新所述设备信息表中对应组员的状态和时间戳,并反馈一确认信息给对应的组员; 3)组员或组长需要同组内的目标成员进行通信时,从本地保存的设备信息表中选取该目标成员的IP地址发起连接请求,连接成功后进行通信。
2.如权利要求1所述的方法,其特征在于所述组的建立方法为:当发起探测请求的所述移动智能终端搜索到周围一个或多个所述移动智能终端时,所述移动智能终端之间相互交换设备信息;然后具有P2P设备的移动智能终端通过三次握手协商出一组长,其中每次握手信息中发送一意图值和一仲裁位,选取意图值最大值为所建组的组长;当两个具有P2P设备的移动智能终端的意图值相等时,根据仲裁位确定所建组的组长。
3.如权利要求2所述的方法,其特征在于所述意图值为一经验值,即所述移动智能终端充当组长的次数。
4.如权利要求2所述的方法,其特征在于所述意图值为所述智能移动终端的硬件加权值,所述硬件加权值=电量X50% +RAMX30% +ROMX20%。
5.如权利要求2所述的方法,其特征在于所述意图值为所述智能移动终端的信道质量指示符CQI ο
6.如权利要求1或2所述的方法,其特征在于所述设备信息包括组员的设备号、IP地址和资源参数。
7.如权利要求1所述的方法,其特征在于当组员设定时间内容未收到组长反馈的所述确认信息,则向组长发送一 Ask信息,来检察组长员是否在组内;如果还在组内,则组长立即发送确认信息给该组员;如果不在组内,则组员之间重新协商选取一组长。
8.如权利要求1所述的方法,其特征在于当组长设定时间内未收到组员的所述心跳包,则向该组员发送一 Ask信息,来检察该组员是否在组内;如果还在组内,则该组员立即发送所述心跳包给组长;如果不在组内,则组长向其它组员广播通知信息更新该组员的状态。
9.如权利要求1所述的方法,其特征在于当组员需要退出组时,该组员向组长发送一离开消息,组长收到该离开消息后更新其设备信息表并广播通知组内其他组员,组员收到该广播通知后更新自己的设备信息表;当组长准备退出组时,组长广播一组长转移消息给组员,组员收到该组长转移消息后进行协商选取一组长。
10.如权利要求1所述的方法,其特征在于所述智能移动终端包括一用来收发文件消息和控制命令的端口,一用于语音通信的端口 ;其中,采用UDP协议进行语音通信: 发送方首先创建一语音数据采集线程和一发送线程,然后所述语音采集线程判断布尔型数据isRecord是否为真,如果为真,则将采集的语音数据发送到设定的栈和缓冲区,关闭语音采集线程;然后所述发送线程判断isStartSend是否为真,如果为真,则从语音采集线程存入语音数据的缓冲区读取数据,采用UDP协议传输给接收方,关闭发送线程; 接收方首先创建一接收语音线程和一播放线程,然后所述接收语音线程判断布尔函数isReceive是否为真,如果为真,则通过UDP协议开始接收数据并把数据存放设定缓冲区后,关闭语音接收线程;然后所述播放线程判断函数isCall是否为真,如果为真,则从指定的缓冲区读取数据,读取完整后从听筒中播放,播放完毕后关闭播放线程; 其中,isRecord为判断语音数据是否完成的flag参数;isRecord为判断语音数据是否完成的flag参数;isReceive为判断是否准备好接收主意的flag参数;isCall为判断是否发起语音通话的flag参数。
【文档编号】H04L12/58GK104333888SQ201410582597
【公开日】2015年2月4日 申请日期:2014年10月27日 优先权日:2014年10月27日
【发明者】程卫军, 黄燕 申请人:中央民族大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1