CN106254348B - 一种基于Android的无线局域网通信方法 - Google Patents

一种基于Android的无线局域网通信方法 Download PDF

Info

Publication number
CN106254348B
CN106254348B CN201610643265.2A CN201610643265A CN106254348B CN 106254348 B CN106254348 B CN 106254348B CN 201610643265 A CN201610643265 A CN 201610643265A CN 106254348 B CN106254348 B CN 106254348B
Authority
CN
China
Prior art keywords
node
network
data
android
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610643265.2A
Other languages
English (en)
Other versions
CN106254348A (zh
Inventor
梁庆中
樊媛媛
林启明
姚宏
曾德泽
颜雪松
胡成玉
刘超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CHINESE GEOLOGICAL UNIV (WUHAN)
Original Assignee
CHINESE GEOLOGICAL UNIV (WUHAN)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHINESE GEOLOGICAL UNIV (WUHAN) filed Critical CHINESE GEOLOGICAL UNIV (WUHAN)
Priority to CN201610643265.2A priority Critical patent/CN106254348B/zh
Publication of CN106254348A publication Critical patent/CN106254348A/zh
Application granted granted Critical
Publication of CN106254348B publication Critical patent/CN106254348B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开一种基于Android的无线局域网通信方法,基于Android的UDP Socket通信;实时发现有新的节点加入移动网络并更新节点列表;有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信。本发明详细分析了Android系统架构,应用程序的组成,着重探讨了Activity和BroadcastReceiver的工作原理和使用技巧,并以此为基础,采用Java为软件编程语言,无线WLAN技术为硬件支持,合理调用Android提供的组件内容,实现基于无线局域网的通信系统,通过系统开发与后期的实验测试,该应用软件可应用于野外考察、灾区救援等场合。

Description

一种基于Android的无线局域网通信方法
技术领域
本发明属于网络技术领域,尤其涉及一种基于Android的无线局域网通信方法。
背景技术
在生产与生活当中,人与人之间离不开沟通与交流,随着科学的发展、技术的进步人们的沟通方式也在发生着潜移默化的改变。随着网络技术和软件技术的不断进步,越来越多的人通过社交网络来结识新的朋友,代表软件有:MSN、QQ、微信、易信等,但他们只是对传统社交网络的拓展。当今网络技术逐步朝着“高速”与“无线”的趋势过渡发展,无线网络以其独有的优势得到企业与个人的青睐。
无线网络包含有:WLAN(无线局域网)、无线个人区域网、无线广域网和固定接入无线技术。其中,无线局域网发展最为迅速,产品也日渐成熟,它以IEEE802.11b标准作为传输协议,支持最大的传输速率达到11Mbit/s。随后于1999年成立的WiFi联盟对无线局域网的发展提供可靠的保障。
相较于有线局域网,无线局域网具有以下优点:
移动性灵活:WLAN提供了对终端移动性的支持,去掉了布线的束缚,终端可在AP覆盖范围内任意移动,并且在保持网络连接不中断的情况下可在不同AP间移动切换。
传输速率高:WLAN目前的传输速率可达11Mbit/s,通过应用OFDM技术的WLAN,可高达54Mbit/s,远远超过有线网络的传输速率。
资源共享:在不超过规定容量要求的基础上,多个终端可共用一个AP。
易于扩展:因为没有布线的局限,用户可随意地增添、重新建立工作站。
基于网络通信的便捷性与经济性的需求,通过移动终端在无线局域网实现通信具有其存在的价值与意义。一方面,局域网内部进行通信,避免了同外网的数据交互,在安全性方面提供了很大的保障;另一方面,无线局域网以其灵活性、共享性、扩展性的优势,给企业和个人在生产与生活中带来极大的便利。同时,智能4G手机和无线网络技术的发展与制度的健全,移动终端基于无线局域网通信将有更广阔的发展前景与应用价值。
智能手机的发展日新月异,使其对操作系统的性能要求也逐步提高,Android操作系统因其开源免费的优势得到众多开发者的青睐,厂商可根据市场的需求自主开发出对用户有吸引力的应用软件,例如:QQ、微信、知乎等等。而基于Android操作系统的无线局域网通信软件的研究与开发,对人们进行安全、短距离、低成本、高速率的通信需求将具有很大的用途。
无线局域网的起源最早可追溯到第二次世界大战,该技术在军事战争方面的应用。随后20世纪70年代到90年代,以太局域网发展迅猛,无线局域网因其无需布线、灵活性强的优势得到市场的认可。但当时的无线局域网产品采用IEEE802.3的标准,易受微波噪声干扰、传输速率较低、各厂商产品间互不兼容等劣势,使其发展受到很大的限制。1990年11月,美国国际电子电机学会成立802.11委员会,开始制定无线局域网标准,才进一步促进无线局域网的高速发展。迄今已推出多项标准,例如:IEEE802.11、IEEEE802.11a、IEEE802.11b、IEEE802.11g等,下面选择几项进行重点介绍:
IEEE802.11b:该标准是无线局域网标准中最著名、普及率最广的标准。其载波的频率为2.4GHz,数据传输速率为11Mbit/s,传输距离为50米至150米。通过该标准推出的产品运用于家庭、办公室、车站、酒店等诸多场合。
IEEE802.11a:该标准采用了与原始标准相同的核心协议,工作频段为5.725-5.85GHz,数据传输速率最大可达54Mbit/s,传输距离为10米至50米,支持语音、数据、图像等众多业务。
IEEE802.11g:该标准频段与802.11b相同,为2.4GHz,最大传输速率可达54Mbit/s传输距离为50米至100米。
IEEE802.11n:该标准是近几年IEEE推出的新的802.11标准,目前仍处于草案阶段,传输速率预计将高达540Mbit/s。若该标准顺利推出,那它将比802.11b快上50倍,而比802.11g快将近10倍,数据将可被传输到更远的距离。
国内企业在无线局域网的应用起步相对早些。在国外设备厂商的技术支持下,广州钢铁集团的各分厂、清华紫光旗下的紫光大厦和蓝润大厦等诸多地方都已通过无线局域网实现无线联网。于2001年起,国内无线局域网的应用推广出现了竞争的势态,参与市场竞争的运营商有中国网通基于802.11b无线协议推出的“无线伴侣”、中国电信也在基于802.11b协议推出了“天翼通”等。
以上方案存在的主要局限性在于:无线网络接入依赖于网络服务运营商(ISP)提供的服务,连接到不同ISP接入点上的终端间进行通信时,需跨网进行,且访问控制受到ISP限制;无线网络拓扑依赖于接入点(AP)的布置,所有的终端都连接到对应的AP上,因此在AP覆盖范围外的终端相互间无法通信;无线网络的移动性、适用性局限大,通信终端智能在固定假设的AP基站覆盖范围内移动,不适用于野外、临时区域及其他不具备架设基站条件的区域。
发明内容
本发明的目的在于提供一种基于Android的无线局域网通信方法,旨在解决目前基于安卓系统搭建的无线局域网内的通讯节点列表获取、显示通讯节点信息、显示未查看消息数量、修改个人信息、节点加入或离开通讯状态的改变、接收发消息等技术不太完善的问题。
本发明是这样实现的,一种基于Android的无线局域网通信方法,该基于Android的无线局域网通信方法包括:
基于Android的UDPSocket通信;
实时发现有新的节点加入移动网络并更新节点列表;
有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信。
进一步,基于Android的UDPSocket通信方法为:
在广播数据包之前,发送方和接收方分别创建一个Socket对象,并指定DatagramPacket数据包存储要被发送的数据,在定义UDPSocket服务时,对一个固定的端口进行监听,在收发数据的过程中,调用Socket对象的send方法发送数据包,使用receive()方法对发送数据包发送过来的数据包进行接收,同时receive()进行阻塞;
当消息从网络中到达后,消息所包含的数据被UDP的receive()方法返回前,数据存储在一个先进先出的接收数据队列中,一个UDPSocket所接受的数据存放在相应的唯一一个消息队列中,每个消息都关联自己源地址信息,每次receive()调用只返回一条消息,receive()方法中在一个缓存区消息的长度大小为n,而接收队列中的第一条消息的长度大于n,则receive()方法只返回这条消息的前n个字节,超出部分自动放弃且没有消息提示。
进一步,接收方操作步骤为:
A、启动Socket连接;
B、创建一个multicastSocket对象,并设定监听端口;将UDP端口编号加入到组播组;
C、创建一个byte数组进行接收,获得用户ID号和获得请求方的ip地址,并接收信息;
D、创建一个空的DatagramPackage对象;
E、使用receive()方法对发送方所发送的数据进行接收,同时进行阻塞;
F、解析接收到的数据信息;所述数据信息包括接收方ID、发送方ID、用户的昵称、用户的IP地址、接收信息的时间;
G、关闭Socket连接,离开组播组。
进一步,发送方操作步骤为:
a、启动Socket连接;
b、创建一个multicastSocket对象,加入到组播组;
c、创建一个InetAddress;
d、将消息转为byte类型;
e、创建一个DatagramPacket对象,并指定其要被发送到的网络中的目的地址以及端口号;
f、调用multicastSocket对象的send方法发送数据;
g、关闭Socket连接,离开组播组。
进一步,实时发现有新的节点加入移动网络并更新节点列表方法包括:
初始化指令缓存、检测网络状态,获取本地IP地址、启动Socket连接、注册广播接收器、获取自身信息、向网络发送心跳包,并注册自己;
所述初始化指令缓存包括初始化用户注册指令缓存、初始化信息发送指令缓存;
检测网络连接状况,获取本地IP地址,其方法为:
首先,设置用户上网权限,允许Internet访问;
然后,检测所有的网络接口,得到每一个网络接口绑定的IP地址;
最后,判断如果该IP地址是IPv4地址且不是回送IP,则该IP地址就是该网络接口的IP。
所述获得自身相关信息包括连接标志号、昵称及通讯节点数量等,更新注册命令的用户数据和更新通话命令的用户数据;
所述向网络发送心跳包,并注册自己为定时向对方发送心跳包,告知对方自己仍“在线”,心跳包发送时间间隔为10秒钟。
进一步,有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信方法包括:
向网络发送心跳包,并注册自己,定时向对方发送心跳包的形式,告知对方自己仍“在线”,心跳包发送时间间隔为10秒钟;
检查用户列表是否有超时用户,当某个节点退出移动网络,所述的某个节点需要广播一个remove消息告知网络中所述的某个节点外的节点,所述的某个节点外的节点通过广播接收器收到所述的某个节点的消息,立即做出响应,将退出的节点从所述的某个节点外的节点列表中删除;用户是否在线检测时间上限为15秒,若超过15秒未作出响应则从列表中清除该用户;
通知有新用户加入或退出,当一个新的节点加入移动网络时,所述的新的节点向网络中广播一个HELLO类型的消息,来告诉当前网络中所述的新的节点外的节点自己的加入,当所述的新的节点外的节点收到所述的新的节点发送过来的消息时,将其加入到所述的新的节点外的节点列表中,同时回送一个HELLO_ACK类型的消息,让新加入的节点知道当前网络中有已存在的节点,并快速建立起新加入的节点列表。
进一步,基于Android的无线局域网通信方法的基于Android的无线局域网通信系统设置有表现层、基于UDP协议的Socke通信模块、SQLite数据库和Android操作系统;
表现层用于提供用户操作体验的图形化界面,显示节点列表和消息编辑与记录,应用层的图形化界面设置有节点列表层、个人信息设置层、通信记录层、节点列表层用于显示当前局域网络中可进行通讯的网络节点列表,以ListView控件来显示所有的节点信息,每个ListItem包含的节点信息设置有:
IPAdress:用于显示网络中到达节点的IP地址;
UserID:用于确认用户的ID,节点注册登录,作为自己在该网络中唯一标识自己的字符串或者数字;
getmessagesCountBuId:用于显示某个用户发来信息,而自身未查看接收的消息的数量统计;通过点击列表中的一节点,跳转到聊天界面,进行信息的编辑发送与接收查看;
个人信息设置层用于用户根据自身的主观意愿选择喜爱的头像以及昵称编辑,当用户个人信息设置成功后,在下次与网络中其他用户聊天通讯中,显示在聊天界面当中;
通信记录层用于用户编辑消息和显示本机与指定终端间信息往来的详情记录,记录包含的字段内容有:消息内容、发送方与接收方的用户ID、发送或接收消息的具体时间;并将这些通信记录保存在SQLite数据库中;
Android操作系统:用于负责界面组件的API,数据发送API,SQLite数据库操作API,API包括一组核心的包和类模块、清单文件的XML元素及属性声明模块、各类意图模块、资源文件的XML元素和属性声明及访问形式模块、可被应用程序请求的各类授权模块以及授权执行模块;
基于UDP协议的Socke通信模块:用于满足同个WLAN环境中,同个网段或不同网段间用户的通信过程,通过Android提供的数据包发送的接口,接受发送并对数据包内容处理,达到节点间的互发现与通讯;
SQLite数据库:用于通过Android自带的SQLite相关接口进行数据储存和处理。
进一步,Android操作系统分为四层,由高到低分别为应用层、应用框架层、系统运行库和linux内核层;
应用层包括主显示屏、电话本模块、联系人模块、时钟模块、天气模块;电话本模块、联系人模块、时钟模块、天气模块均集成在应用层集成板上并均与显示屏连接;
应用框架层包括Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器;Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器均集成在应用框架层集成板上;
视图系统包括按钮组件、文本框组件、编辑框组件、下拉列表组件、时间选择器组件;
系统运行库包括SurfaceManager组件、SQLite数据库、SGL组件、3Dlibraries组件;
Linux内核层包括音频驱动模块、Bindre驱动模块、摄像头模块、显示驱动模块、闪存模块、键盘模块、电源管理模块、Wi-Fi驱动模块。
本发明提供的基于Android的无线局域网通信方法,由笔记本电脑或者带有WLAN热点功能的智能手机建立一个局域网,将测试手机通过WiFi连接加入指定的WLAN。之后打开应用软件,系统会检测到当前移动网络中存在的通信节点,当有新的节点加入或离开网络,系统会自动更新其节点列表,为了方便不同用户间能快速识别对方的身份信息,可在信息设置中选择头像和修改昵称。随后用户可向局域网中其他用户发送或接收消息,实现基于Android的局域网络通信的目的;本发明详细分析了Android系统架构,应用程序的组成,着重探讨了Activity和BroadcastReceiver的工作原理和使用技巧,并以此为基础,采用Java为软件编程语言,无线WLAN技术为硬件支持,合理调用Android提供的组件内容,实现基于无线局域网的通信系统;通过使用该应用软件,用户在户外活动过程中,在共享的局域网环境下了解到当前无线网络中其他可通讯用户的基本信息并进行接收发消息,无需再借助于掌机、对讲机等移动设备实现通讯的需求,极大的方便用户在户外的通讯交流。通过系统开发与后期的实验测试,该应用在无障碍物条件下通讯距离大于等于250米,有障碍物条件下可穿越三堵10~20公分混凝土墙,完成大致20米距离内的通讯需求,完全可应用于野外考察、灾区救援等场合。
附图说明
图1是本发明实施例提供的基于Android的无线局域网通信方法流程图。
图2是本发明实施例提供的接收方和发送方操作步骤流程图。
图3是本发明实施例提供的节点加入流程图。
图4是本发明实施例提供的节点离开流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理作进一步描述。
如图1所示,本发明实施例的基于Android的无线局域网通信方法包括:
S101:基于Android的UDPSocket通信;
S102:实时发现有新的节点加入移动网络并更新节点列表;
S103:有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信。
基于Android的无线局域网通信系统设置有表现层、基于UDP协议的Socke通信模块、SQLite数据库和Android操作系统;
表现层用于提供用户操作体验的图形化界面,显示节点列表和消息编辑与记录,应用层的图形化界面设置有节点列表层、个人信息设置层、通信记录层、
节点列表层用于显示当前局域网络中可进行通讯的网络节点列表,以ListView控件来显示所有的节点信息,每个ListItem包含的节点信息设置有:
IPAdress:用于显示网络中到达节点的IP地址;
UserID:用于确认用户的ID,节点注册登录,作为自己在该网络中唯一标识自己的字符串或者数字;
getmessagesCountBuId:用于显示某个用户发来信息,而自身未查看接收的消息的数量统计;通过点击列表中的一节点,跳转到聊天界面,进行信息的编辑发送与接收查看;
个人信息设置层用于用户根据自身的主观意愿选择喜爱的头像以及昵称编辑,当用户个人信息设置成功后,在下次与网络中其他用户聊天通讯中,显示在聊天界面当中;
通信记录层用于用户编辑消息和显示本机与指定终端间信息往来的详情记录,记录包含的字段内容有:消息内容、发送方与接收方的用户ID、发送或接收消息的具体时间;并将这些通信记录保存在SQLite数据库中;
Android操作系统:用于负责界面组件的API,数据发送API,SQLite数据库操作API,API包括一组核心的包和类模块、清单文件的XML元素及属性声明模块、各类意图模块、资源文件的XML元素和属性声明及访问形式模块、可被应用程序请求的各类授权模块以及授权执行模块;
基于UDP协议的Socke通信模块:用于满足同个WLAN环境中,同个网段或不同网段间用户的通信过程,通过Android提供的数据包发送的接口,接受发送并对数据包内容处理,达到节点间的互发现与通讯;
SQLite数据库:用于通过Android自带的SQLite相关接口进行数据储存和处理。
Android操作系统采用分层的架构,Android分为四层,由高到低分别为应用层、应用框架层、系统运行库和linux内核层;
应用层包括主显示屏、电话本模块、联系人模块、时钟模块、天气模块;电话本模块、联系人模块、时钟模块、天气模块均集成在应用层集成板上并均与显示屏连接;
应用框架层包括Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器;Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器均集成在应用框架层集成板上;
视图系统包括按钮组件、文本框组件、编辑框组件、下拉列表组件、时间选择器组件;
系统运行库包括SurfaceManager组件、SQLite数据库、SGL组件、3Dlibraries组件;
Linux内核层包括音频驱动模块、Bindre驱动模块、摄像头模块、显示驱动模块、闪存模块、键盘模块、电源管理模块、Wi-Fi驱动模块。
本发明提供的基于Android的无线局域网通信方法,由笔记本电脑或者带有WLAN热点功能的智能手机建立一个局域网,将测试手机通过WiFi连接加入指定的WLAN。之后打开应用软件,系统会检测到当前移动网络中存在的通信节点,当有新的节点加入或离开网络,系统会自动更新其节点列表,为了方便不同用户间能快速识别对方的身份信息,可在信息设置中选择头像和修改昵称。随后用户可向局域网中其他用户发送或接收消息,实现基于Android的局域网络通信的目的;本发明详细分析了Android系统架构,应用程序的组成,着重探讨了Activity和BroadcastReceiver的工作原理和使用技巧,并以此为基础,采用Java为软件编程语言,无线WLAN技术为硬件支持,合理调用Android提供的组件内容,实现基于无线局域网的通信系统,通过系统开发与后期的实验测试,该应用软件可应用于野外考察、灾区救援等场合。
下面结合相关技术与理论对本发明的应用原理作进一步描述。
1、本发明先围绕Android相关技术与理论进行介绍,主要包括简介、Android系统架构、应用程序分析,后对UDPSocket通信以及SQLite数据库进行分析与探究。
1.1Android相关技术与理论
1.1.1Android简介
Android是Google公司基于Linux操作系统开发的移动端平台,主要运用于平板电脑和智能手机。Android开发包含四大组件,分别为活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)、内容提供商(ContentProvider),是首个为移动端提供完整的开发环境、代码开源的平台。它具有以下的平台优势:
(1)开放性:谈论Android平台的优势,首先关注的则是其开放的平台特征,它允许任何移动终端厂商加入进来,为其平台的发展与拓广积累人气、补充资源。
(2)不受束缚:相较于以往手机应用的发展很大程度上受到运营商的制约,如今的用户可以很方便的连接网络,尤其是随着EDGE、HSDPA等技术带来2G、3G移动网络的发展与运用。
(3)丰富的硬件:Android平台开放的特征也为其带来丰富的硬件设备,众多的厂商为当今的安卓市场带来功能各具特色的产品。
(4)方便开发:Android平台为第三方开发商提供广阔、自由的开发环境,相较于iphone的各种条条框框阻扰,Android的开发环境为其带来更多新颖多样化的软件应用。
(5)Google应用:Android平台背后有强大的Google支撑,先进技术的渗透、杰出人才的输送、系统的组织管理,Android平台与Google优质服务的衔接将带来更多有价值的应用产品。
1.1.2Android系统架构
Android的系统架构同其他操作系统相同,都是采用分层的架构。Android分为四层,由高到低分别为应用层、应用框架层、系统运行库层和linux内核层。
(1)应用
Android平台中所有的应用程序都是通过Java语音编写的,例如电话本、联系人、时钟、天气等。开发人员可根据自己的项目需求为产品引入更多功能丰富多样化的模块内容。
(2)应用框架
应用程序框架层是Android开发所需要应用到的一系列API框架,其架构的设计简化了组件的重复使用,例如视图(Views)就包含了按钮、文本框、编辑框、下拉列表、时间选择器等组件。应用框架也为开发人员提供了各种管理器来配合应用程序的快速开发,这对于Android平台应用程序的扩充与推广提供了极大的便利。
(3)系统运行库
系统运行库包含的C/C++库可为不同的组件提供调用,开发人员可通过应用框架来调用这个功能库。核心库中主要包含SurfaceManager、SQLite数据库、SGL、3Dlibraries等。
(4)Linux内核
Android的核心系统是基于Linux2.6内核提供服务的,主要依赖于它核心系统服务中的进程管理、应用权限及安全、网络协议栈、驱动模型等。Linux内核也同时充当硬件与软件之间的抽象层。
1.1.3Android应用程序分析
Android的API主要由几个模块组成,分别为一组核心的包和类、清单文件的XML元素及属性声明、各类意图(Intents)、资源文件的XML元素和属性声明及访问形式、可被应用程序请求的各类授权以及包含于系统中的授权执行。
Android的应用程序由以下四种主要类型组成:Activity、Service、BroadcastReceiver以及ContentProvider。
(1)Activity
Activity是Android中最常用的应用程序类型,一个Activity通常相当于一个单独的屏幕。在Activity中可以配备一些View,而View类负责各种界面中的元素实现,例如标签、编辑框、按钮等。一个Android应用程序中包含有一个或者多个Activity。这些Activity与应用程序中的屏幕以一对一的形式对接。
Intent的作用在于解决Android应用中各组件之间的通讯,是对将要执行的操作的抽象描述。Intent最常见的作用在于可实现多个Activity之间的跳转,其中包含的重要部分为Intent动作(Action)与动作对应的数据(Data)。
在这里对Activity中的View类做个简单介绍,Activity通过View来显示用户界面的各项元素。LinearLayout、TableLayout、AbsoluteLayout等都是View可以选用的布局设计方式,用户接口可在选择一种布局之后,通过View来显示。View元素是通过View控件组建,例如:按钮、列表、文本编辑框等,每个元素一般都包含有多个属性。
(2)Service
Service启动是通过startService(Intentservice)实现的,而通过Context.bindService可对Service进行绑定。Service没有可见的用户界面,但可以在后台长时间运行。
(3)BroadcastReceiver
BroadcastReceiver通过英文理解可知它是“广播接收者”的意思,从组件本质来看它是一种全局的监听器,对系统全局的广播信息进行实时监听。在一般情况下,BroadcastReceiver没有用户接口,通常注册于AndroidManifest.xml文件中。
(4)ContentProvider
ContentProvider类因为实现了一组标准的方法接口,使得ContentProvider的各种数据能够被其他应用程序存储和读取。它是Android的数据存储抽象机制,对程序间数据通信与共享问题的解决提供了很大的作用。
1.2基于UDP协议的Socket通信
1.2.1socket通信机制
Socket(套接字)是网络应用程序的编程接口。每个套接字是通过一个半相关描述的形式进行表示,例如:协议、本地地址或者本地端口;而一个完整的套接字则使用一个相关描述,补充进远程地址和远程端口。每一个套接字都有唯一的套接字号,是通过本地的操作系统进行分配获取的。
Socket根据传输数据类型的不同,主要分成三种类型:
(1)流式Socket(SOCK_STREAM),这种类型是基于TCP协议实现的,两个通讯的应用程序首先要建立虚拟的连接,彼此提供可靠的、面向连接的通信流,从而保证了数据传输过程的有序性与准确性。
(2)数据报Socket(SOCK_DGRAM),该类型采用数据报协议UDP,是一种无连接的服务,传输的数据报文相互独立,无顺序且可靠性无法得到保证。
(3)原始Socket,该类型允许对底层协议(IP或ICMP)直接访问,功能相较前两者更为强大,但是使用较为不便,很多协议的开发基于该类型创造。
1.2.2UDP协议的工作原理
UDP协议是面向无连接的传输层协议,区别于在连接过程中需要服务器端侦听的TCP协议,它是一种“强制性”的网络连接。UDP数据报服务类型分为三种:一对一、一对多和无连接。它不保证数据在传输过程中是否能到达目的端、也不能够保证数据在传输的过程中是否有序进行,对于丢失的数据不进行重新传输。UDP协议的主要工作是负责将应用程序传递过来的数据分块交给网络层,确保能够接收到分组的信息。
虽然UDP协议无法像TCP协议那样保证数据传输的可靠性,但UDP具有自身的优越性,尤其在无线网络中对数据传输的要求,UDP协议使用范围更广。UDP相较于TCP,传输效率更胜一筹,而且很多应用程序并不要求传输的数据具有可靠性,例如视频通讯,需要实时的交互,并不要求数据的绝对正确与可靠性。
UDP每个端口是由一个唯一的编号进行标识,使用UDP端口号时,它提供给客户端发送消息的位置。当应用程序要向另一个终端发送消息时,UDP生成一个数据头,包括源端口,这些端口提供送达信息所需要的地址。UDP协议确保数据的安全是通过在报头中提供校验值的方式,在目标计算机中,数据包被传递到UDP协议程序并且送达目的地端口。
1.3数据库技术
当应用程序要对大量数据进行处理时,需要使用关系数据库对这些数据信息进行存储、管理以及查询。Android平台自身携带SQLite数据和相关的API,这对于开发人员实现数据库的相关操作提供了很大的便利。SQLite是完全独立的,不依靠于外部应用程序独立开发,并且它非常健壮,一天内可以处理100000多次web站点的点击率,甚者可以超达上述数字10倍负荷的处理量。SQLite是一个轻型的数据库,在一些简单的语句处理方面比当前业内流行的数据库处理性能更为快捷,对于内存有限制的Android移动设备而言,SQLite数据库更为匹配。
SQLite是一款开源的中小型嵌入式数据库,用途宽广。它为SQL92提供了大多数支持,例如:视图、支持多表与索引、触发器等。SQLite具有以下功能特性:支持ACID事务、对数据库大小的支持达到2TB、API简单快捷、可以在不同字节顺序的机器间自由共享数据库文件信息、不需要安装以及管理配置、源代码量大致13万行所占体积很小等。基于以上特性可知,SQLite数据库为开发人员在应用程序的开发过程中,提供了很大的便捷性。
下面结合系统分析与设计对本发明进一步说明。
2、系统功能目标
基于现有的业务流程和对目标系统的需求分析,要实现一个自组织的网络,主要要实现以下功能内容:实现基于Android的UDPSocket通信、能及时发现有新的节点加入移动网络并更新节点列表、有节点离开也能及时做出响应并告知该网络中的其他用户、能实现跨网段的通信等。
系统非功能性需求
(1)界面需求
在界面风格方面要求结构简单明了,布局简洁合理,操作简单流畅,有助于用户的快速上手使用。需要实现的界面有:一个列出当前移动网络中可到达的节点信息概要的界面,一个显示与某个节点进行消息发送与查收记录的聊天界面,一个对用户个人基本信息修改的界面。
(2)软硬件环境
移动手持设备,操作系统在Android1.5及以上,要求支持IEEE802.11协议。
(3)质量需求
质量需求是对应用软件应具备的质量属性的要求,具体内容见表3-1所示。
表3-1质量属性需求表
系统架构设计
架构设计部分主要表述的是系统具体功能部件的搭建过程,以及相互间的通信概况,是对编码成果的检验。本发明主要由UI表现层,基于UDP协议的套接字通信过程,SQLite数据库和Android操作系统四大部分组成。
Android操作系统:主要负责界面组件的API,数据发送API,SQLite数据库操作API等。
UDPSocket通信协议:满足同个WLAN环境中,同个网段或不同网段间用户的通信过程。通过Android提供的数据包发送的接口,接受发送并对数据包内容处理,达到节点间的互发现与通讯的功能。
数据库:数据库表的设计是采用SQLite数据库,通过Android自带的SQLite相关接口进行实现。
表现层:手机上供用户操作体验的图形化界面,用于显示节点列表和消息编辑与记录,运用到Android提供的相关类实现。
表现层设计
根据系统的功能设计与架构分析,将应用划分为四个层次,本发明主要对表现层的功能进行详细分析。
表现层主要基于应用的功能需求而设计出以下界面内容:
(1)节点列表
该界面用于显示当前局域网络中可进行通讯的网络节点列表,以ListView控件来显示所有的节点信息,每个ListItem包含的节点信息属性有:
IPAdress:用于显示网络中可到达节点的IP地址;
UserID:用户的ID,节点注册登录,作为自己在该网络中唯一标识自己的字符串或者数字,用户可根据自身的喜好更改ID名称;
getmessagesCountBuId:用于显示某个用户发来信息,而自身未查看接收的消息的数量统计。
通过点击列表中某个节点,可跳转到聊天界面,进行信息的编辑发送与接收查看。
(2)个人信息设置
该界面用于用户根据自身的主观意愿选择喜爱的头像以及昵称编辑,当用户个人信息设置成功后,在下次与网络中其他用户聊天通讯中,会显示在聊天界面当中。
(3)通信记录
该界面用于用户编辑消息和显示本机与指定终端间信息往来的详情记录,这些记录包含的字段内容有:消息内容、发送方与接收方的用户ID、发送或接收消息的具体时间。这些通信记录保存在SQLite数据库中,方便检索查看。
下面结合附图和系统实现方法对本发明进一步说明。
3、开发环境
3.1本发明主要介绍系统实现所需要的Android开发环境搭建与设计工具的选择。系统配置与开发软件需求如下:
操作系统:windows7
开发环境:Eclipse4.2
JDK1.7
AndroidDevelopmentTools
AndroidSDK
3.2UDP协议与组播实现
如图3提供的节点加入流程图所示:4.2.1UDPSocket通信前期准备工作
(1)初始化指令缓存
initCmdBuffer():
System.arraycopy(Constant.pkgHead,0,regBuffer,0,3);
//初始化用户注册指令缓存
System.arraycopy(Constant.pkgHead,0,msgSendBuffer,0,3);
//初始化信息发送指令缓存
(2)检测网络连接状况,获取本地IP地址
在Android开发中,获取本地IP地址的方法有两种,分别为通过wifi的方式和使用GPRS,二者在正常运行过程中,都要对用户的使用权限进行更改设定。本软件采用的是GPRS获取本地IP地址。
(3)启动socket连接
comBridge=newCommunicationBridge();
comBridge.start();
(4)注册广播接收器
regBroadcastReceiver();
(5)获得自身相关信息
getMyInfomation();
包含的参数类型有:inticonId、Stringnickname、intmyId更新注册命令和通话命令的用户数据
System.arraycopy(ByteAndInt.int2ByteArray(myId),0,regBuffer,6,4);
System.arraycopy(ByteAndInt.int2ByteArray(iconId),0,regBuffer,10,4);//更新注册命令的用户数据
System.arraycopy(ByteAndInt.int2ByteArray(myId),0,talkCmdBuffer,6,4);
System.arraycopy(ByteAndInt.int2ByteArray(iconId),0,talkCmdBuffer,10,4);//更新通话命令的用户数据;
(6)向网络发送心跳包,并注册自己。
newUpdateMe().start();
在局域网中接收和发送数据主要采用socket进行实现,但是如果socket断开连接,那么对接收和发送数据将造成影响。Socket中通过定时向对方发送心跳包的形式,告知对方自己仍“在线”,保证网络链接的有效性。本软件中,设定心跳包发送时间间隔为10秒钟。
(7)检查用户列表是否有超时用户
newCheckUserOnline().start()。
如图4提供的节点离开流程图所示:当某个节点退出移动网络,它需要广播一个remove消息告知网络中其它节点,其它节点通过广播接收器(broadcastreceiver)收到该消息,会立即做出响应,将退出的节点从自身的节点列表中删除。本软件对用户是否在线检测时间上限设置为15秒,如果超过15秒未作出响应则从列表中清除该用户。
(8)通知有新用户加入或退出
sendPersonHasChangedBroadcast();
当一个新的节点加入移动网络时,它会向网络中广播一个HELLO类型的消息,来告诉当前网络中其它节点自己的加入。当其它节点收到该节点发送过来的消息时,会将其加入到自己的节点列表中,同时回送一个HELLO_ACK类型的消息,让新加入的节点知道当前网络中有哪些节点存在,并快速建立起自己的节点列表。
3.3协议分析与通讯实现
UDP是一种面向非连接,不可靠传输的通信协议,区别于TCP协议信息发送的准确性,UDP有其传输效率较高的优点,因此在无线网络中具有很大的用途。
服务端:openasocket(socket)——>namethesocket(blind)——>sendandreceivepackage(sendtorecvfrom)——>closesocket(closesocket)
客户端:openasocket(socket)——>sendandreceivepackage(sendtorecvfrom)——>closesocket(closesocket)
在广播数据包之前,发送方和接收方都要创建一个Socket对象,并且指定DatagramPacket数据包用来存储要被发送的数据。通常在定义UDPSocket服务时,会对一个固定的端口进行监听。在收发数据的过程中,调用Socket对象的send方法发送数据包,使用receive()方法对其发送过来的数据包进行接收,同时receive()也具有阻塞监听的作用。
如图2提供的接收方和发送方操作步骤流程图所示:
1、接收方操作步骤:
(1)启动Socket连接
comBridge=newCommunicationBridge();
(2)创建一个multicastSocket对象,并设定监听端口
multicastSocket=newMulticastSocket(Constant.PORT);
multicastSocket.joinGroup(InetAddress.getByName(Constant.MULTICAST_IP));//加入到组播组
(3)创建一个byte数组进行接收
byte[]uId=newbyte[4];//获得用户ID号
byte[]ipBytes=newbyte[4];//获得请求方的ip地址
byte[]msgBytes=newbyte[Constant.msgLength];//接收信息
(4)创建一个空的DatagramPackage对象
DatagramPacketrdp=newDatagramPacket(recvBuffer,recvBuffer.length);
(5)使用receive()方法对发送方所发送的数据进行接收,同时它也是阻塞的方法
multicastSocket.receive(dp);
(6)解析接收到的数据信息
person.personId=ByteAndInt.byteArray2Int(personIdBytes);
//接收方ID
person.personHeadIconId=ByteAndInt.byteArray2Int(iconIdBytes);
//发送方ID
person.personNickeName=(newString(nickeNameBytes)).trim();
//用户的昵称
person.ipAddress=
Constant.intToIp(ByteAndInt.byteArray2Int(personIpBytes));
//用户的IP地址
person.timeStamp=System.currentTimeMillis();
//接收信息的时间
(7)关闭Socket连接
multicastSocket.leaveGroup(InetAddress.getByName(Constant.MULTICAST_IP));//离开组播组
multicastSocket.close();
2、发送方操作步骤
(1)启动Socket连接
comBridge=newCommunicationBridge();
(2)创建一个multicastSocket对象,并设定监听端口
multicastSocket=newMulticastSocket(Constant.PORT);
multicastSocket.joinGroup(InetAddress.getByName(Constant.MULTICAST_IP));//加入到组播组
(3)创建一个InetAddress
InetAddressinetAddress=enumIpAddr.nextElement();
(4)将消息转为byte类型
byte[]msgBytes=msg.getBytes();
(5)创建一个DatagramPacket对象,并指定其要被发送到的网络中的目的地址以及端口号
DatagramPacketdp
newDatagramPacket(msgSendBuffer,Constant.bufferSize,InetAddress.getByName(psn.ipAddress),Constant.PORT);
(6)调用multicastSocket对象的send方法发送数据
multicastSocket.send(dp);
(7)关闭Socket连接
multicastSocket.leaveGroup(InetAddress.getByName(Constant.MULTICAST_IP));//离开组播组
multicastSocket.close().
下面结合系统测试与性能分析对本发明进一步说明。
4.1应用程序的实现:
4.1.1用户操作:
由笔记本电脑或者带有WLAN热点功能的智能手机建立一个局域网,将测试手机通过WiFi连接加入指定的WLAN。之后打开应用软件,系统会检测到当前移动网络中存在的通信节点,当有新的节点加入或离开网络,系统会自动更新其节点列表。为了方便不同用户间能快速识别对方的身份信息,可在信息设置中选择头像和修改昵称。随后用户可向局域网中其他用户发送或接收消息,实现基于Android的局域网络通信的目的。
4.1.2用户界面:
首先选择三部带有WiFi功能的测试手机,连入同一个局域网,依次启动应用,
当有新的用户加入到当前局域网并启动软件,该用户能快速获取到当前网络中其它通讯节点的信息,并建立通讯节点列表,而网络中的其它用户检测到有新用户加入,会及时作出相应,更新自己的通信列表。
4.2性能测试与分析:
4.2.1距离测试:
在距离测试实验中,为了测量系统在不同的地域环境中连接到所指定的局域网并保持正常通信的极限距离,我们分别在室内、室外选取不同的测试场合。由一部智能手机开设热点建立局域网;另一部手机作为服务器端,负责接收发送方从不同距离位置发送过来的消息,验证连接的有效性;第三部手机作为客户端,是距离测试实验的主要对象,通过选取不同的距离位置发送消息给服务器端手机,检验是否能被接收,直到该节点从服务器端消失,测量由热点源到客户端手机的直线距离,作为在该地域环境中,数据传输所能达到极限距离的半径。实验测试的结果,详情如下所示:
无线访问接入点(AP):vivox3vrev1.22.2(basedonAndroid),
服务器端(接收数据):魅族mx4basedonAndroid4.4.4,
客户端(发送数据):SonyS55tAndroid4.4.2,
1、室内环境:
(1)学生宿舍:
有无障碍物:有(隔墙),
传输距离:隔着两间宿舍(三堵墙),约为15米,
测试过程:将AP与接收数据端手机放在同一宿舍,后操控客户端手机,依次从相隔第一间、第二间、第三间屋内发送数据到服务器端,检测数据的有效传达性。测量结果显示在第三间宿舍发送数据到服务器端手机,数据包已丢失,两个节点在各自的通讯列表中无法搜寻到对方,即有效传输距离约为15米。
有无障碍物:无(宿舍楼道),
传输距离:约56米,
测试过程:选择行人较少的时段,将AP与接收数据端手机放在楼道一侧,之后操控客户端手机,沿着射线方向逐渐拉开距离,直到两节点各自从软件中搜寻不到对方。通过测量服务器端与客户端相隔路程的瓷砖个数,以及每个瓷砖的长度,计算出有效传输的距离约为56米。
2、室外环境:
(1)北综排球场外围(测量距离已超出排球场的直线距离,改为选址排球场外的人行道测试)
有无障碍物:无,
传输距离:约96米,
测量过程:选择行人较少的时段和路段,将AP与接收数据端手机放在道路端点一侧,之后操控客户端手机,沿着直线逐渐拉开距离,直到两节点各自从软件中搜寻不到对方。因传输距离较远,通过测量步长与步数的方式,计算出由客户端到AP的有效传输距离约为96米。
有无障碍物:有(行人、车辆等),
传输距离:约62米,
测量过程:选择行人较多的时段,将AP与接收数据端手机放在道路端点一侧,之后操控客户端手机,穿插于人流中,逐渐同服务器端拉开直线距离,通过测量步长与步数的方式,得出有效传输距离约为62米。
(2)北区室内运动馆外围:
有无障碍物:无,
传输距离:约118米,
测试过程:与北综外围排球场有障碍物测试过程相同
有无障碍物:有,
传输距离:约73米,
测试过程:与北综外围排球场无障碍物测试过程相同,
(3)情人坡,
有无障碍物:有(树、陡坡),
传输距离:方圆40米内,覆盖范围为整个情人坡,
测试过程:将AP与接收数据端手机放在情人坡路口,之后操控客户端手机,穿插于树丛、陡坡、池塘和情人坡的外围边界向服务器端发送信息。测试结果显示,有效传输距离覆盖整个情人坡。
以上实验基于距离测试得到相应的数据结论,下面主要谈论自身在实验过程中遇到的问题以及对应的分析过程:
(1)离AP近的用户节点对局域网中其它节点通讯状况的改变响应时延更短,相较于同AP距离较远的客户端手机,服务器端能更快判别客户端是否已断开连接。
分析:该实验现象是受调制方式与码率因素的影响。希望有更快的传输速度,那么要有良好的信噪比进行支撑。离AP越近,信号强度越强,信噪比越高,那么传输的速度也就越快。相反AP越远,信号的强度减弱,信噪比变低,那么传输的速度也就越慢。
从背景噪声角度分析,信号干扰越大,信噪比越低,传输速度越慢。相反信号干扰越小,信噪比越高,传输速度越快。
(2)客户端手机随着离AP距离的增加,信号传输时断时续,达到一定的距离发现与服务器断开连接,停顿片刻之后等信号恢复正常,可沿更远的方向继续迈进,重复多次,直到信号完全消失。
分析:目前的智能手机都支持IEEE802.11协议,随着无线局域网技术的不断发展,IEEE802.11也不断延伸出诸多的子协议,例如,作为AP的vivox3v支持IEEE802.11a/b/g/n协议,服务器端魅族4支持IEEE802.11a/b/g/n/ac协议。不同子协议载波的频率、传输速率、传输距离各不相同。随着客户端手机离AP距离越来越远,不同的子协议间能自动的进行转换,保证移动网络连接的有效性。信号时断时续的原因,是因为协议转变过程中存在时间延迟。
(3)在不同时段或选取不同设备(笔记本电脑或者智能手机)建立局域网,在实验过程中,时常出现系统闪退或者失联的现象。
分析:该现象的发生与网络带宽有很大的原因,尤其在上网高峰时段或者有多个节点连入当前局域网并占用大量的网络带宽,对系统的性能将造成很大的影响。
4.2.2响应时间测试:
响应时间测试是通过客户端与服务器端发送不同长度的数据包,记录接收时间与发送时间,二者的时间差即为当前长度数据传输过程中的系统响应时间。
由于实验的测试是基于实体智能机进行,数据由客户端发送给服务端,响应时间非常短,得以毫秒计算。而在手机设置中无法将时间精确到毫秒显示,使得无法确保接收方与发送方是以相同的时间节点进行实验测试。
在实验过程中,为了测试不同数据长度传输过程中的响应时间情况。在初步计划拟定中,预设测试由100B、1k、10k、100k、1M、10M六个层级数据包传输情况。但在实际实验过程中,发现数据包的大小设定为10k,相应的缓冲区buffersize也调整到相应的大小后,数据由客户端发送给服务端,服务端无法接收到相应的信息,数据包在传输过程中丢失。通过Google查明原因,得到的解释为:
一个包没有固定长度,以太网限制在46至1500字节,1500就是以太网的最大传输单元。通信长度,是由发送方自身决定,但实际发送情况受到需求和网络状况的影响。对于TCP而言,这个通信长度可设置大一些,但Socket内部默认的收发缓冲区大小为8K。对于UDP,一般控制通信长度在1024字节至10K。无论包有多大,IP层和数据链路层都会将发送的包进行分片传输,而局域网一般控制在1500字节左右,分片后的包将由不同的路由传输到接收方。因为UDP是不可靠传输,对其而言,倘若其中有一个分片丢失,那么接收方的IP层将把整个数据包丢弃,这就产生了丢包现象。综合以上因素,响应时间测试实验未能完成。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于Android的无线局域网通信方法,其特征在于,该基于Android的无线局域网通信方法包括:
基于Android的UDPSocket通信;
实时发现有新的节点加入移动网络并更新节点列表;
有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信;
基于Android的UDPSocket通信方法为:
在广播数据包之前,发送方和接收方分别创建一个Socket对象,并指定数据包(DatagramPacket)存储要被发送的数据,在定义UDPSocket服务时,对给定的固定的端口进行监听;需要发送数据时,通过监听到的唯一标识UDP套接字的连接ID打开UDP连接并设置通信超时上限,接着将待发送数据写入到发送缓冲中,然后调用Socket对象的数据发送方法发送数据包,发送方法发送的数据报文包含目的IP地址、端口地址、消息缓冲区大小信息;需要接收数据时,通过监听到的唯一标识UDP套接字的连接ID打开UDP连接并设置通信超时上限与接收缓冲区长度n,然后调用Socket对象的数据接收方法将发送过来的数据包写入到接收缓冲区,数据报文包含用户的ID号、IP地址、消息内容;数据接收方法在未完成从接收缓冲区读取UDP数据报的数据时,不对其它数据接收方法的调用;
当消息从网络中到达后,消息所包含的数据被UDP的接收方法返回前,数据存储在一个先进先出的接收数据队列中,一个UDPSocket所接受的数据存放在相应的唯一一个消息队列中,每个消息都关联自己源地址信息,每次接收方法调用只返回一条消息;由于接收方法中设置的消息缓存区的长度大小为n,因此当该消息长度大于n时,接收方法最多只返回这条消息的前n个字节;
实时发现有新的节点加入移动网络并更新节点列表方法包括:
初始化指令缓存、检测网络状态,获取本地IP地址、启动Socket连接、注册广播接收器、获取自身信息、向网络发送心跳包,并注册自己;
初始化指令缓存包括初始化用户注册指令缓存、初始化信息发送指令缓存;
检测网络连接状况,获取本地IP地址;
获得自身相关信息包括连接标志号、昵称及通讯节点数量,更新注册命令的用户数据和更新通话命令的用户数据;
向网络发送心跳包,并注册自己为定时向对方发送心跳包,告知对方自己仍“在线”,心跳包发送时间间隔为10秒钟;
有节点离开时能实时做出响应并告知该网络中的用户,实现跨网段的通信方法包括:
向网络发送心跳包,并注册自己,定时向对方发送心跳包的形式,告知对方自己仍“在线”,心跳包发送时间间隔为10秒钟;
检查用户列表是否有超时用户,当某个节点退出移动网络,所述的某个节点需要广播一个remove消息告知网络中所述的某个节点外的节点,所述的某个节点外的节点通过广播接收器收到所述的某个节点的消息,立即做出响应,将退出的节点从所述的某个节点外的节点列表中删除;用户是否在线检测时间上限为15秒,若超过15秒未作出响应则从列表中清除该用户;
通知有新用户加入或退出,当一个新的节点加入移动网络时,所述的新的节点向网络中广播一个HELLO类型的消息,来告诉当前网络中所述的新的节点外的节点自己的加入,当所述的新的节点外的节点收到所述的新的节点发送过来的消息时,将其加入到所述的新的节点外的节点列表中,同时回送一个HELLO_ACK类型的消息,让新加入的节点知道当前网络中有已存在的节点,并快速建立起新加入的节点列表。
2.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,接收方操作步骤为:
A、启动Socket连接;
B、创建一个对象(multicastSocket),并设定监听端口;将UDP端口编号加入到组播组;
C、创建一个字节数组进行接收,获得用户ID号和获得请求方的ip地址,并接收信息;
D、创建一个空的对象(DatagramPackage);
E、使用接收方法对发送方所发送的数据进行接收,同时进行阻塞;
F、解析接收到的数据信息;所述数据信息包括接收方ID、发送方ID、用户的昵称、用户的IP地址、接收信息的时间;
G、关闭Socket连接,离开组播组。
3.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,发送方操作步骤为:
a、启动Socket连接;
b、创建一个对象(multicastSocket),并将这个对象加入到组播组;
c、创建一个类(InetAddress);
d、将消息转为字节类型;
e、创建一个对象(DatagramPacket),并指定其要被发送到的网络中的目的地址以及端口号;
f、调用对象(multicastSocket)的发送方法发送数据;
g、关闭Socket连接,离开组播组。
4.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,
检测网络连接状况,获取本地IP地址,方法为:
首先,设置用户上网权限,允许Internet访问;
然后,检测所有的网络接口,得到每一个网络接口绑定的IP地址;
最后,判断如果该IP地址是IPv4地址且不是回送IP,则该IP地址就是该网络接口的IP。
5.如权利要求1所述的基于Android的无线局域网通信方法,其特征在于,基于Android的无线局域网通信方法的无线局域网通信系统设置有表现层、基于UDP协议的Socke通信模块、SQLite数据库和Android操作系统;
表现层用于提供用户操作体验的图形化界面,显示节点列表和消息编辑与记录,应用层的图形化界面设置有节点列表层、个人信息设置层、通信记录层;
节点列表层用于显示当前局域网络中可进行通讯的网络节点列表,以ListView控件来显示所有的节点信息,每个ListItem包含的节点信息设置有:
IPAdress:用于显示网络中到达节点的IP地址;
UserID:用于确认用户的ID,节点注册登录,作为自己在该网络中唯一标识自己的字符串或者数字;
getmessagesCountBuId:用于显示某个用户发来信息,而自身未查看接收的消息的数量统计;通过点击列表中的一节点,跳转到聊天界面,进行信息的编辑发送与接收查看;
个人信息设置层用于用户根据自身的主观意愿选择喜爱的头像以及昵称编辑,当用户个人信息设置成功后,在下次与网络中其他用户聊天通讯中,显示在聊天界面当中;
通信记录层用于用户编辑消息和显示本机与指定终端间信息往来的详情记录,记录包含的字段内容有:消息内容、发送方与接收方的用户ID、发送或接收消息的具体时间;并将这些通信记录保存在SQLite数据库中;
Android操作系统:用于负责界面组件的API,数据发送API,SQLite数据库操作API,API包括一组核心的包和类模块、清单文件的XML元素及属性声明模块、各类意图模块、资源文件的XML元素和属性声明及访问形式模块、可被应用程序请求的各类授权模块以及授权执行模块;
基于UDP协议的Socke通信模块:用于满足同个WLAN环境中,同个网段或不同网段间用户的通信过程,通过Android提供的数据包发送的接口,接受发送并对数据包内容处理,达到节点间的互发现与通讯;
SQLite数据库:用于通过Android自带的SQLite相关接口进行数据储存和处理。
6.如权利要求5所述的基于Android的无线局域网通信方法,其特征在于,Android操作系统分为四层,由高到低分别为应用层、应用框架层、系统运行库和linux内核层;
应用层包括主显示屏、电话本模块、联系人模块、时钟模块、天气模块;电话本模块、联系人模块、时钟模块、天气模块均集成在应用层集成板上并均与显示屏连接;
应用框架层包括Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器;Activity管理器、内容提供器、位置管理器、通知管理器、包管理器、资源管理器、电话管理器、视图系统、窗口管理器均集成在应用框架层集成板上;
视图系统包括按钮组件、文本框组件、编辑框组件、下拉列表组件、时间选择器组件;
系统运行库包括SurfaceManager组件、SQLite数据库、SGL组件、3Dlibraries组件;
Linux内核层包括音频驱动模块、Bindre驱动模块、摄像头模块、显示驱动模块、闪存模块、键盘模块、电源管理模块、Wi-Fi驱动模块。
CN201610643265.2A 2016-08-08 2016-08-08 一种基于Android的无线局域网通信方法 Active CN106254348B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610643265.2A CN106254348B (zh) 2016-08-08 2016-08-08 一种基于Android的无线局域网通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610643265.2A CN106254348B (zh) 2016-08-08 2016-08-08 一种基于Android的无线局域网通信方法

Publications (2)

Publication Number Publication Date
CN106254348A CN106254348A (zh) 2016-12-21
CN106254348B true CN106254348B (zh) 2019-08-20

Family

ID=58079375

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610643265.2A Active CN106254348B (zh) 2016-08-08 2016-08-08 一种基于Android的无线局域网通信方法

Country Status (1)

Country Link
CN (1) CN106254348B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108243160B (zh) * 2016-12-26 2021-02-23 同方威视技术股份有限公司 拉曼光谱设备及其通信方法
CN106921454A (zh) * 2017-02-14 2017-07-04 刘恒茂 一种安全广播系统的控制方法
CN108733989A (zh) * 2017-04-19 2018-11-02 湖南鼎源蓝剑信息科技有限公司 一种针对Android应用的通信协议加密方法
CN107329803A (zh) * 2017-07-07 2017-11-07 北京金山安全管理系统技术有限公司 虚拟机管理方法和装置
CN107396438B (zh) * 2017-08-25 2020-05-26 哈尔滨工业大学 基于智能手机的通道构建、时间同步及结构健康监测方法
CN107592566A (zh) * 2017-09-22 2018-01-16 四川长虹电器股份有限公司 Android系统智能电视通信的方法
CN107890346A (zh) * 2017-11-09 2018-04-10 丁海涛 一种智能神经外科医生用颅压检测治疗控制系统
CN109068293B (zh) * 2018-07-05 2021-03-02 中国铁道科学研究院集团有限公司电子计算技术研究所 一种wlan网络动车组车地间数据自动通信方法
CN109873837A (zh) * 2019-04-12 2019-06-11 广东工业大学 基于Android系统的中心设备及多协议适配系统
CN110519683B (zh) * 2019-07-29 2020-12-08 同济大学 基于Wi-Fi P2P技术的群体位置共享方法
CN110674157B (zh) * 2019-09-29 2022-04-19 成都吉胜科技有限责任公司 一种基于局域网的数据缓存方法
CN110868344B (zh) * 2019-10-17 2022-04-19 北京全路通信信号研究设计院集团有限公司 一种仿真mvb的方法、系统、装置和计算机可读介质
CN115174552B (zh) * 2022-05-31 2024-03-29 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于web操作系统的局域网通信和文件传输方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103476027A (zh) * 2013-09-24 2013-12-25 汇友数码(深圳)有限公司 一种移动终端的文件传输方法
CN104202714A (zh) * 2014-08-05 2014-12-10 深圳市元征科技股份有限公司 相异操作系统的移动终端近距离通讯方法和系统
CN105530150A (zh) * 2014-10-22 2016-04-27 张学一 一种基于Android平台智能家居客户端
CN104768147A (zh) * 2015-03-09 2015-07-08 中国科学院信息工程研究所 一种无线局域网设备及数据通道实时管控方法和系统

Also Published As

Publication number Publication date
CN106254348A (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
CN106254348B (zh) 一种基于Android的无线局域网通信方法
Mészáros et al. Inet framework
CN111200846B (zh) 时延敏感网络通信方法及其装置
US11271671B2 (en) WLAN testing using an RF abstraction layer
US7936734B2 (en) Portable cellular enhancer
CN104468327B (zh) 一种群组加入方法、装置及系统
CN103491649B (zh) Wifi同步apn网络多通道并发上网并自动优选wifi联网的方法
CN101778127A (zh) 具有动态拓扑的有机数据网络
CN102204172A (zh) 评估多连接选项的系统和方法
David et al. A communication middleware for scalable real-time mobile collaboration
Raivio 4G-hype or reality [mobile communications]
CN107949010A (zh) 基于mesh网络的无线组网路由测试方法及系统
CN103036729A (zh) 一种开放网络能力的系统、方法和相关网元
CN109410900A (zh) 音效处理方法、装置以及电子设备
Tanaka et al. Trace‐based simulation for 6TiSCH
CN110519683A (zh) 基于Wi-Fi P2P技术的群体位置共享方法
Yang et al. Design of communication interface for M2M-based positioning and monitoring system
CN106161044B (zh) 一种信息传输方法和装置
CN103491609A (zh) 一种移动终端间进行通信的方法、系统及装置
CN105592414B (zh) 一种信息处理方法及第一电子设备
CN113115479A (zh) 通信方法、装置及存储介质
US20180098363A1 (en) Configurable communication infrastructure for event spaces
CN105491565B (zh) 一种信息处理方法及电子设备
EP2034699A2 (en) Method and apparatus for supporting interactions between a user and peers
Ferreira et al. A middleware architecture for mobile and pervasive large-scale augmented reality games

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant