一种基于Android的无线局域网通信方法与流程

文档序号:12478081阅读:来源:国知局

技术特征:

1.一种基于Android的无线局域网通信方法,其特征在于,该基于Android的无线局域网通信方法包括:

基于Android的UDP Socket通信;

实时发现有新的节点加入移动网络并更新节点列表;

有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信。

2.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,基于Android的UDP Socket通信方法为:

在广播数据包之前,发送方和接收方分别创建一个Socket对象,并指定DatagramPacket数据包存储要被发送的数据,在定义UDP Socket服务时,对给定的固定的端口进行监听;需要发送数据时,通过监听到的唯一标识UDP套接字的连接ID打开UDP连接并设置通信超时上限,接着将待发送数据写入到发送缓冲中,然后调用Socket对象的数据发送方法send()发送数据包,send方法发送的数据报文包含目的IP地址、端口地址、消息缓冲区大小信息;需要接收数据时,通过监听到的唯一标识UDP套接字的连接ID打开UDP连接并设置通信超时上限与接收缓冲区长度n,然后调用Socket对象的数据接收方法receive()将发送过来的数据包写入到接收缓冲区,数据报文包含用户的ID号、IP地址、消息内容;数据接收方法在未完成从接收缓冲区读取UDP数据报的数据时,不对其它数据接收方法的调用;

当消息从网络中到达后,消息所包含的数据被UDP的receive()方法返回前,数据存储在一个先进先出的接收数据队列中,一个UDP Socket所接受的数据存放在相应的唯一一个消息队列中,每个消息都关联自己源地址信息,每次receive()调用只返回一条消息;由于receive()方法中设置的消息缓存区的长度大小为n,因此当该消息长度大于n时,receive()方法最多只返回这条消息的前n个字节。

3.如权利要求2所述的基于Android的无线局域网通信方法,其特征在于,接收方操作步骤为:

A、启动Socket连接;

B、创建一个multicastSocket对象,并设定监听端口;将UDP端口编号加入到组播组;

C、创建一个byte数组进行接收,获得用户ID号和获得请求方的ip地址,并接收信息;

D、创建一个空的DatagramPackage对象;

E、使用receive()方法对发送方所发送的数据进行接收,同时进行阻塞;

F、解析接收到的数据信息;所述数据信息包括接收方ID、发送方ID、用户的昵称、用户的IP地址、接收信息的时间;

G、关闭Socket连接,离开组播组。

4.如权利要求2所述的基于Android的无线局域网通信方法,其特征在于,发送方操作步骤为:

a、启动Socket连接;

b、创建一个multicastSocket对象,并将这个对象加入到组播组;

c、创建一个InetAddress;

d、将消息转为byte类型;

e、创建一个DatagramPacket对象,并指定其要被发送到的网络中的目的地址以及端口号;

f、调用multicastSocket对象的send方法发送数据;

g、关闭Socket连接,离开组播组。

5.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,实时发现有新的节点加入移动网络并更新节点列表方法包括:

初始化指令缓存、检测网络状态,获取本地IP地址、启动Socket连接、注册广播接收器、获取自身信息、向网络发送心跳包,并注册自己;

初始化指令缓存包括初始化用户注册指令缓存、初始化信息发送指令缓存;

检测网络连接状况,获取本地IP地址;

获得自身相关信息包括连接标志号、昵称及通讯节点数量,更新注册命令的用户数据和更新通话命令的用户数据;

向网络发送心跳包,并注册自己为定时向对方发送心跳包,告知对方自己仍“在线”,心跳包发送时间间隔为10秒钟。

6.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,

检测网络连接状况,获取本地IP地址,方法为:

首先,设置用户上网权限,允许Internet访问;

然后,检测所有的网络接口,得到每一个网络接口绑定的IP地址;

最后,判断如果该IP地址是IPv4地址且不是回送IP,则该IP地址就是该网络接口的IP。

7.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信方法包括:

向网络发送心跳包,并注册自己,定时向对方发送心跳包的形式,告知对方自己仍“在线”,心跳包发送时间间隔为10秒钟;

检查用户列表是否有超时用户,当某个节点退出移动网络,所述的某个节点需要广播一个remove消息告知网络中所述的某个节点外的节点,所述的某个节点外的节点通过广播接收器收到所述的某个节点的消息,立即做出响应,将退出的节点从所述的某个节点外的节点列表中删除;用户是否在线检测时间上限为15秒,若超过15秒未作出响应则从列表中清除该用户;

通知有新用户加入或退出,当一个新的节点加入移动网络时,所述的新的节点向网络中广播一个HELLO类型的消息,来告诉当前网络中所述的新的节点外的节点自己的加入,当所述的新的节点外的节点收到所述的新的节点发送过来的消息时,将其加入到所述的新的节点外的节点列表中,同时回送一个HELLO_ACK类型的消息,让新加入的节点知道当前网络中有已存在的节点,并快速建立起新加入的节点列表。

8.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,基于Android的无线局域网通信方法的基于Android的无线局域网通信系统设置有表现层、基于UDP协议的Socke通信模块、SQLite数据库和Android操作系统;

表现层用于提供用户操作体验的图形化界面,显示节点列表和消息编辑与记录,应用层的图形化界面设置有节点列表层、个人信息设置层、通信记录层、

节点列表层用于显示当前局域网络中可进行通讯的网络节点列表,以ListView控件来显示所有的节点信息,每个ListItem包含的节点信息设置有:

IPAdress:用于显示网络中到达节点的IP地址;

User ID:用于确认用户的ID,节点注册登录,作为自己在该网络中唯一标识自己的字符串或者数字;

getmessagesCountBuId:用于显示某个用户发来信息,而自身未查看接收的消息的数量统计;通过点击列表中的一节点,跳转到聊天界面,进行信息的编辑发送与接收查看;

个人信息设置层用于用户根据自身的主观意愿选择喜爱的头像以及昵称编辑,当用户个人信息设置成功后,在下次与网络中其他用户聊天通讯中,显示在聊天界面当中;

通信记录层用于用户编辑消息和显示本机与指定终端间信息往来的详情记录,记录包含的字段内容有:消息内容、发送方与接收方的用户ID、发送或接收消息的具体时间;并将这些通信记录保存在SQLite数据库中;

Android操作系统:用于负责界面组件的API,数据发送API,SQLite数据库操作API,API包括一组核心的包和类模块、清单文件的XML元素及属性声明模块、各类意图模块、资源文件的XML元素和属性声明及访问形式模块、可被应用程序请求的各类授权模块以及授权执行模块;

基于UDP协议的Socke通信模块:用于满足同个WLAN环境中,同个网段或不同网段间用户的通信过程,通过Android提供的数据包发送的接口,接受发送并对数据包内容处理,达到节点间的互发现与通讯;

SQLite数据库:用于通过Android自带的SQLite相关接口进行数据储存和处理。

9.如权利要求8所述的基于Android的无线局域网通信方法,其特征在于,Android操作系统分为四层,由高到低分别为应用层、应用框架层、系统运行库和linux内核层;

应用层包括主显示屏、电话本模块、联系人模块、时钟模块、天气模块;电话本模块、联系人模块、时钟模块、天气模块均集成在应用层集成板上并均与显示屏连接;

应用框架层包括Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器;Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器均集成在应用框架层集成板上;

视图系统包括按钮组件、文本框组件、编辑框组件、下拉列表组件、时间选择器组件;

系统运行库包括Surface Manager组件、SQLite数据库、SGL组件、3D libraries组件;

Linux内核层包括音频驱动模块、Bindre驱动模块、摄像头模块、显示驱动模块、闪存模块、键盘模块、电源管理模块、Wi-Fi驱动模块。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1