职场文秘网

首页 > 文秘写作 > 毕业设计 / 正文

Linux环境下基于Socket的数据传输软件设计

2023-02-02 12:55:07

王璇 王亮 杨玻 中国航空工业集团公司西安航空计算技术研究所

随着网络通信在航空领域使用日趋广泛,我们对于高可靠的网络通信要求也是越来越高。因此操作系统中网络的支持程度就显得尤为重要。在现行众多的操作系统中,Linux支持多用户、多进程、多线程,实时性好,功能强大且稳定。在通信和网络功能方面,Linux优于其它操作系统。其它操作系统不包含如此紧密的内核结合在一起的联接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。

Socket作为UNIX的进程通信机制,通常也称作“套接字”,用于描述IP地址和端口号,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。套接字通过调用系统提供的库函数实现数据传输,不需要过多了解底层的细节,从而完成设备和网络之间的通信。

Socket编程过程分为服务器端和客户端编程,通信过程如图1所示。

图1 服务器端和客户端Socket通信过程

Linux环境下的Socket编程是通过套接字的相关接口来实现的,应用程序可以通过Socket接口来收发数据。通信过程如下:

首先创建套接字socket(),然后服务器端绑定套接字bind(),即将本地主机的IP地址、端口号与创建的套接字相绑定。绑定完成后,服务器端监听listen(),等待客户端连接。客户端发送连接请求connect()。客户端的请求会触发服务器端和客户端底层的三次握手,服务器端接受连接accept()。成功建立连接后,双方就可以进行数据收发了。一般使用send()发送数据,使用recv()来接收数据。以上,Socket就连接了客户端和服务器端的应用程序。在双方不需要通信时,可以使用close()关闭连接。

上面介绍了Socket的网络通信原理,现在我们就可以对数据传输软件进行设计了。这是一个运行在Linux操作系统上基于Socket的客户端程序,我们主要从软件概述、Linux定时器使用、连接保持模块、数据发送模块和数据接收模块等5个方面进行阐述。

2.1 软件概述

本软件运行在一个装有Ubuntu Linux操作系统的航空设备上。该设备通过网线与数据库服务器相连接,并将设备和服务器的IP地址设置在同一网段中。在客户端与服务器端建立连接后,客户端主动向服务器端请求上层应用软件所需要的数据,服务器端接收到指令后找到相应数据返回给客户端,供上层应用使用。由于上层应用随时可能下发数据传输请求,故客户端应周期性判断与服务器端的连接状态,保证在上层应用下发命令时客户端和服务器端是通信正常的。

2.2 Linux定时器使用

Linux系统提供了毫秒级定时器itimerval,它是一个有两个成员变量it_value和it_interval的结构体。it_value指定时器安装后首次启动的初始值,it_interval指定时器重启动的间隔值。本软件将它们都设置为1秒,即定时器启动后将会以1秒为间隔周期触发。接着使用setitimer()函数使方才设置的定时器生效,并使用signal()将中断处理函数挂接入该定时器。这样,系统每秒就能运行一次中断处理函数,它包含连接保持模块、数据发送模块和数据接收模块。

2.3 连接保持模块

客户端在Socket初始化完成后,会周期调用connect()与服务器端尝试建立连接,如果建立连接成功,则会给服务器端发送连接保持命令字,如果在超时时间内服务器返回了相应命令字,说明连接保持。这时,上层应用就可以下发传输数据的命令了;
如果连续三个周期服务器没有在超时时间内回应命令字,则判定服务器下线,断开并关闭其连接。下个周期继续调用connect()尝试与其建立连接。

2.4 数据发送模块

在连接保持的状态下,当上层应用下发数据传输命令,客户端就可以使用send()函数来发送数据了。如果出现了小于发送长度的情况,就代表着数据有部分没有发送完成,只是发送了一部分,这时就需要再次发送来完成数据发送。

2.5 数据接收模块

当服务器端接收到客户端所请求的数据时,服务器端就会回复数据,即客户端使用recv()接收数据。由于服务器端不一定会立即回复数据,所以要设置超时时间。在超时时间内,客户端接收到了足够数量的数据,并进行累加和校验,校验成功,那么传递给上层应用;
校验失败,则通知服务器端重传。如果服务器端回复超时,则也需要服务器端重传。

程序采用C语言编写,编译Linux客户端时需要执行如下编译命令:gcc -o client client.c,然后运行此执行文件,命令如下:

在Linux系统下执行完上述命令后,设备就和数据库服务器建立连接了。设备先向服务器发送请求数据命令,再接收服务器发来的数据,是典型的“主从模式”一发一收。

Linux网络具有较高的安全性,可以进行网络资源的共享,完成网络通信。它还包含着很多网络协议,拥有开放的源代码,我们可以利用Linux网络进行基于Socket的网络通信技术的开发。Socket作为其中的接口起着举足轻重的作用,连接起了网络设备和应用程序与下层协定,从而完成设备和网络之间的网路通信。

猜你喜欢 服务器端网络通信命令 管理Windows10的PowerShell命令行使用记录电脑爱好者(2021年18期)2021-09-23信息化时代网络通信安全的背景和对策计算机与网络(2021年5期)2021-06-01疫情就是命令 防控就是责任人大建设(2020年2期)2020-07-27基于网络通信的智能照明系统设计电子制作(2019年15期)2019-08-275G网络通信技术应用的前瞻性思考数字技术与应用(2018年7期)2018-10-10基于Qt的安全即时通讯软件服务器端设计网络空间安全(2016年11期)2017-02-13网络通信中的数据信息安全保障分析科学中国人(2017年14期)2017-01-28基于Qt的网络聊天软件服务器端设计软件导刊(2016年11期)2016-12-22解析Windows10的内部命令电脑爱好者(2016年22期)2016-12-16一种基于Java的IM即时通讯软件的设计与实现科技资讯(2015年19期)2015-10-09

Tags: 数据传输   环境   设计  

搜索
网站分类
标签列表