基于Socket技术的无线通信信令收发模拟软件设计

2017-05-30 10:48任育琦刘莹李文杰
企业科技与发展 2017年9期
关键词:客户端服务器

任育琦 刘莹 李文杰

【摘 要】文章设计一种无线通信信令收发模拟软件,采用TCP网络数据传输形式来模拟无线数据传输中信令的收发。该软件采用客户端/服務器模式,以手机为客户端,以基站为服务器端。基于Socket通信编程,实现信令的发送和接收、信令的解析和处理。多个手机可以同时与一个基站进行数据交互,而基站同时也能监听和处理多个手机发送的请求。整个软件用C++语言加以实现,并测试通信,运行良好。

【关键词】无线通信信令;客户端/服务器;Socket通信

【中图分类号】TN914 【文献标识码】A 【文章编号】1674-0688(2017)09-0034-03

0 引言

随着无线通信行业的迅速发展,通信产业链日渐成熟,无线通信技术深刻地影响着人们的生活。在无线通信网中,除了传输相关业务信息外,还在通信设备之间传输用来保证正常通信所产生的控制信号,而信令网就是传输这些控制信号的网络,而用来控制语音或数据传输的消息称为信令。信令可看做是一个通信网络的控制系统,不同于用户信息,用户信息是通过通信网络由发送者传给接收者,而信令通常需要在通信网络的基站、移动台和移动控制交换中心之间传输,以及进行分析处理并经交互作用而形成一系列的操作和控制,其作用是保证用户信息的有效且可靠的传输。

本文设计了一种无线通信信令收发的模拟软件,用来模拟无线数据传输中信令的收发、解码分析、处理及纠错。

1 Socket通信

Socket接口是TCP/IP网络中一个通用的API,也是在互联网上进行应用开发最为普遍的的API。Socket在计算机中提供了一个通信端口,可以与任何一个具有Socket端口的计算机进行通信。应用程序在网络上传输、接收的信息都通过这个Socket接口来完成,通过调用系统提供的Socket库函数实现网络中计算机的相互通信。在应用开发中就像使用文件句柄一样,可以对Socket句柄进行读、写操作。通信机制采用客户端/服务器模式,所谓客户端和服务器,就是2个相应的应用程序,即客户端程序发送请求给服务器,服务器对请求作出应答,并产生结果。

2 模拟软件设计

2.1 总体设计

客户端/服务器公共模块包括显示模块、通信模块、子模块和状态模块四大部分。其中,显示模块主要显示并处理用户信息和提供定时器。通信模块主要实现服务器/客户端处理数据的接收和发送。子模块对应着一个客户端(手机),主要协调数据流在通信模块和状态的传输,以及状态的变迁管理和状态模块的切换。状态模块主要用于各个信令的校验,以及信令的产生。

本文设计的软件采用C/S架构,应用C++程序语言,采用对话框模式,以手机为客户端,基站为服务器。该软件用于实现信令的发送和接收、信令解析处理及在信令收发传输中发生几种状态的迁移,其中手机和基站以收到信令为状态迁移的触发条件。多个手机可以同时与一个基站进行信息交互,同时基站也能监听和处理多个手机的请求,但基站的存储设置较小,所以只能处理的手机个数有限制。TCP/IP网络数据传输采用Windows Socket实现,Socket采用TCP数据流方式,虽然TCP/IP是面向连接的数据传输方式,但也需要在应用层确保数据的可靠到达,增加超时重发机制,且重发次数有限并可配置。

2.2 服务器端设计

服务器端设计采用分层结构,分为4个层:即通信层、数据处理层、消息缓冲层和显示层。其中,通信层主要负责数据的收发,通信层由通信模块构成。数据处理层主要用于解析信令、生成信令数据等与业务相关的数据处理,由管理模块、子模块和状态模块构成。消息缓冲层主要储存消息队列,缓存通信模块接收的数据端消息。显示层主要用于界面数据的实现和用户操作,由对话框类构成。服务器端的层次结构如图1所示。

如图1所示,通信模块将接收到的网络数据通过数据流传递给数据处理层进行处理,并发送消息队列经消息缓冲层到显示层处理。数据处理层将产生的信令数据传递给通信层,并通过消息机制将要发送给客户端的数据发送给显示层处理。

通信层的通信模块采用多线程设计,其中一个线程用于端口监听,当端口有客户端连接,则开启一个独立的线程接收这个客户端Socket数据。开启的接收数据线程数是可定义的,如果超过最大连接数,则不再开启数据接收线程。接收客户端Socket数据的线程将接收到的数据存入消息缓存层。数据处理层的管理模块开启多个处理数据消息线程,并进行在读取消息线程里面调用客户端Socket对应的角色进行处理。子模块根据所需的信令数据调用状态模块进行信令的校验和产生,维护着对应客户端的状态信息,并根据接收到不同的信令进行状态的切换。状态模块通过调用通信模块的数据发送函数将信令数据发送给客户端。显示层主要接收消息,将接收到的消息进行显示,主要显示信令ID、信令流向和码流,并对错误信息进行突出显示。具体数据流向如图2所示。

2.3 客户端设计

客户端的设计架构和服务器大体一致,采用4层设计,分别为通信层、数据处理层、消息缓冲层和显示层。其中,通信层包括通信模块,主要实现异步I/O数据接收和发送。数据处理层包括子模块和状态模块,用于解析信令,生成信令数据等数据处理。显示层主要用于界面显示和用户操作,由对话框类构成。客户端的层次结构如图3所示。

由于客户端采用异步I/O模式,当网络有数据接收时,会触发窗口的网络消息,通过显示层的对话框调用通信模块的接收数据函数,并将数据转发给数据处理层进行数据处理。数据处理层只包含一个子模块,通过状态模块实现相应的信令数据校验和信令产生,由子模块调用通信层的发送函数将数据发送给服务器。具体数据处理流程如图4所示。

3 测试结果

服务器和客户端程序的运行效果图如图5所示。

手机拨号,向基站发送请求建立消息,处于空闲状态的基站收到请求,向手机回提示消息。同时,基站接通链路,向手机发送连接状态消息。手机向基站回复应答,进入通话阶段。

当通话结束,基站立即释放链路,向手机发送断开状态消息。手机释放链路,向基站回释放消息,整个通话结束。对于基站,其正常流程是手机发送完释放消息后关闭手机。消息为灰色表示连接断开,如果是红色,则是收到非预期消息,重新发送。如果出现超时状态回滚,则超时消息重发。

4 结论

本文以Socket技术为载体,设计一种无线通信信令收发模拟软件,实现无线数据传输中信令的收发。通过实际应用和测试,能够达到预期的目标,通信时每条信令都可以在界面上显示ID、方向和码流,所有信令都能可靠无误地到达对方,任何一方发送的信令丢失后都有重发机制。通过模拟软件的开发,体现了Socket在网络编程方面的巨大作用,实现了网络编程的易实现性和可靠性。

参 考 文 献

[1]刘光.嵌入式无线通信系统设计[D].西安:西安电子科技大学,2010(6).

[2]朱辉生.VC中基于SOCKET的网络编程[J].计算机应用与软件,2004,21(4).

[3]王远洋,周渊平,郭焕丽.Linux下基于Socket多线程并发通信的实现[J].微计算机信息,2009,25(15).

[4]罗亚非.基于TCP的Socket多线程通信[J].电脑知识与技术,2009(1):563-565,598.

[5]赵玮.基于Socket的消息队列中间件的研究与实现[D].呼和浩特:内蒙古大学,2007.

[6]徐小东.基于Socket技术的数据交换平台的设计与实现[D].上海:上海交通大学,2006.

[7]任育琦,杨晴.基于Socket技术的负荷分担通信系统仿真的设计[J].电脑知识与技术,2013(28).

[责任编辑:钟声贤]

猜你喜欢
客户端服务器
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
大枢纽 云平台 客户端——中央人民广播电台的探索之路
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
服务器操作系统可信加固技术研究