物联网应用跨平台数据通信研究.docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
物联网应用跨平台数据通信研究近几年来,随着物联网技术的发展,智能医疗、智能交通、智能家居、智能物流以及智慧城市的研究和应用非常广泛,物联网正在悄然改变我们的生活,使人们的生活更加便捷和舒适[1]。
5G网络的到来,将开启“万物互联”时代。
物联网技术就是使各种设备都能接入网络,实现跨平台的数据通信。
一般的物联网应用程序都支持电脑、手机和平板等多种设备使用,需要实现桌面端和移动端的跨平台通信。
目前,C#已经成为开发物联网桌面端的主流语言,而An⁃droid 成为开发物联网移动端的主流语言。
标准的Socket通信技术可以实现任何平台和任何进程之间的通信,在PC端和An⁃droid手机端通过有线或无线的连接情况下,实现两端设备的Socket连通[2]。
1实现通信的关键技术
1.1Socket通信原理
Socket的英文原义是“孔”或“插座”,也被称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以实现不同系统之间的通信[3]。
在TCP/IP网络中,应用程序通过“套接字”发出请求或应答请求,“套接字”采用客户端/服务器端(Client/Server,C/S)模式。
“套接字”之间的连接过程分为三个步骤:1)服务器监听:服务器实时监听网络状态,处于等待连接的状态;2)客户端请求:由客户端“套接字”
提出连接请求,连接的是服务器端的“套接字”;3)连接确认:当服务器端“套接字”监听到客户端“套接字”的连接请求后,它就激活一个新进程处理客户端请求,两端连接上后可进行数据传输的操作。
而服务器“套接字”继续处于监听状态,接受其他客户端“套接字”的连接请求。
Socket有两种操作方式:面向连接和无连接的。
面向连接的操作使用TCP协议,这种方式在正式发送数据前,必须和对方建立可靠的连接。
一个TCP连接必须经过三次握手才能建立起来,TCP对应的是可靠性要求高的应用;而无连接的操作方式使用UDP协议,这种操作在正式通信前不必与对方先建立连接,不管对方状态就直接发送数据。
UDP对应的是可靠性要求低、通信效率高的应用。
1.2C#中的Socket编程
C#语言简洁的语法和强大的功能使套接字编程变得十分简单,在命名空间.Sockets中,Socket类提供了对套接字的支持[4]。
应用程序通过TcpClient类和TcpListener类使用传输控制协议(TCP),通过UdpClient使用用户数据文报协议(UDP),而TcpClient、TcpListener 和UdpClient这些协议类都是建立在Socket类的基础之上,负责数据传输的细节工作。
网络通讯中的所有数据都是以字节的形式进行传输的,因此必须把数据转化为byte[]的类型。
命名空间System.Text中的Encoding类,可以实现字符串和字节数组的相互转换,而
Sys⁃tem命名空间中的BitConverter类,则实现基础数据类型与字节数组的相互转换。
1.3Android中的Socket编程
Android编程使用的是Java语言,因此JavaSocket网络编程在Android平台都是适用的,但Android平台也有其特殊性之处。
Socket 编程通常采用客户端/服务器端(Client/Server,C/S)模式,服务器必须有一个固定的IP地址,才能接收客户端的请求。
而手机的IP地址是由运营公司动态分配的,所以Android端通常运行的是客户端程序[5]。
Java在包中提供所有与网络通信相关的类。
其中,InetAddress类封装了IP地址,利用该类可以获取IP地址和主机地址等信息。
ServerSocket类表示服务器套接字,通过指定的端口监听请求,建立连接后进行数据交互。
Socket类表示客户端套接字,用于向服务器发出请求连接,连接建立后也可进行数据交互。
2系统设计
2.1总体设计
模拟办公楼安防监测系统,设计一个桌面端和Android移动端通信的模型。
系统启动后,桌面端接收移动终端通过网络发送的火焰、烟雾、红外对射的信号状态,并将各信号的状态显示在界面上,使用网络摄像机实现视频监控和记录功能。
移动端使用ADAM4150数字量。