基于 GPRS 的信息家电联网技术
陈嘉1,刘宏2
1湖南师范大学数学与计算机科学学院计算机系,湖南,长沙(410081)
2湖南师范大学数学与计算机科学学院计算机系,湖南,长沙(410081)
摘要:本文首先介绍 GPRS 的系统结构,并在此基础上提出一种采用 GPRS 技术实现家庭网
关和互联网无线接入的信息家电网络架构,最后提出一种采用多线程实现家庭网关软件与
远程监控软件间 Socket 通信的新方案。
关键词:通用分组无线业务;信息家电;家庭网关;远程控制中心
中图法分类号:TP393 文献标志码:A
The Technology of the Network Connection
Based On GPRS In Information Appliance Area
ChenJia,LiuHong
(Computer Department,School of Math and Computer
science,Hunan Normal University,Hunan,Changsha)
Abstract:This paper first introduces the system architecture of GPRS,then proposes a IA network
architecture of applying the GPRS technology to the wireless connection between home network and
,it proposes a new method of applying multi_thread to realize the socket
communication between the software of the home gateway and the software of the remote controller.
Key Words:GPRS; Information Appliance; Home Gateway; Remote Control Center
1 引言
GPRS(General Packet Radio Service)是通用分组无线业务的简称,是在现有的全球移动
通信系统 GSM(Global System for Mobile communication)上发展起来的一种新的承载业务。
分组交换技术的使用是 GPRS 超越传统 GSM 的强大武器,同时这种技术也使 GPRS 成为信息
家电领域的新宠。GPRS 技术还具有高速传输,快捷登录,实时在线,合理计费,自如切换,
业务丰富,资源共享等诸多优点,它为家庭网关接入外部数据网提供了一种新的解决方案。
2 GPRS系统结构[4]
GPRS 系统主要由以下功能单元组成:服务 GPRS 支持节点 SGSN,网关 GPRS 支持节点 GGSN,
分组控制单元 PCU,边界网关 BG,短消息系统 SMS,移动台 MS (包括移动终端 MT 和终端单
元 TE),归属位置寄存器 HLR,基站系统 BSS (包括基站收发信机 BTS 和基站控制器 BSC),
移动服务中心 MSC。GPRS 系统的结构见图 1。GPRS 能充分利用现有 GSM 系统的网络资源,
它在 GSM 基础上增加的网络设备是 PCU,SGSN,GGSN。限于篇幅,下面仅对 GPRS 在 GSM 基础
上新增的设备功能进行介绍。1)服务 GPRS 支持结点 SGSN(Service GPRS Support Node):
它的主要作用有:记录移动终端的当前位置信息;进行鉴权和移动性管理;进行数据包的
加密和压缩;在移动终端和 GGSN 间完成移动分组数据的发送和接收,提供到 GGSN 的 GTP
———————————————————————————————————————
作者简介:陈嘉(1980-),女,湖南邵阳人,硕士,主要研究领域为信息家电;刘宏,男,教授,主要研究
领域为信息家电。
隧道;执行安全功能;执行接入控制功能;进行逻辑链路管理;进行计费数据管理;2)网
关 GPRS 支持节点 GGSN:GGSN 是 GPRS 网络与外部数据网的分界线,它的主要作用有:支持
IP 和 协议,可以提供与多种不同的数据网络相联,如 Internet,PSPDN, 等;
通过 Gc 接口可以向 HLR 请求用户的位置信息;对外部数据网而言,GGSN 发挥路由器的作用:
负责存储已经获得 GPRS 业务的用户路由信息,具有地址分配,计费和防火墙的功能;对内
部 GPRS 网络而言,GGSN 发挥网关的作用:负责 GPRS 网络和外网间数据的正确传输,提供
了到 SGSN 的 GTP 隧道;可以进行计费和统计。3)分组控制单元 PCU(Packet Control Unit):
在 GPRS 中,在基站控制器 BSC 旁增添了一个部件 PCU,它是对基站系统 BSS 的软件升级。
PCU 的主要作用有:为 GPRS 网络提供 Gb 接口,建立到 SGSN 的基站系统 GPRS 协议(BSSGP)
和帧中继接口协议;处理链路层的介质访问控制(MAC)和无线链路控制(RLC)功能;负
责进行接口接入控制,空中接口的分组调度及分组组装;将数据业务和话音业务分开,控
制无线资源的分配,允许多用户接入同一无线资源。
3 采用GPRS模块的信息家电网络架构[2]
E C
Gd
GbGb
A
Um Abis
Gn Gi
Gc
Gp
Gr
D
Gs
Gb
BG
SGSN GGSNBTS BSC PCUR MT
MSC/VLR
SMS
HLR
PSTN
ISDN
PLMN
Other PLMN
TE
PDN
Internet
图 1 GPRS 系统结构图
IA
IA
IA
蓝牙
模块
家庭网关
GPRS
模块
GPRS 移动
通信网络
Internet
P
D
A
手
机
掌上电脑
便携机
远程监控中心
无线家庭网络
图 2 采用 GPRS 模块的信息家电网络架构
在该网络架构中, 与家庭网关的无线连接,从而构建起一个无
信息家电通过蓝牙模块实现
线家庭网络。GPRS 模块实现家庭网关与 GPRS 网络的无线连接。与外部数据网如 Internet
通过路由器相连的远程监控中心可以是具有静态 IP 地址的 PC 机,也可以是个人数字助理
PDA,掌上电脑,手机等可移动设备。通过与各种有线接入技术如 Modem 拨号,综合数字业
务网 ISDN,非对称数字用户线 ADSL,有线电视网 Cable Modem,光纤到户 FTTH 及其它无线
接入技术如 GSM 数据传输增强型 EDGE,高速电路交换数据服务 HSCSD 的比较,发现 GPRS 技
术更能适应信息家电非周期性的,突发的数据传输,更适合于家庭网关与监控中心的远程
接入,能带来更大的投资效益。限于篇幅,这部分不再详细论述。
4 家庭网关软件与远程监控软件的Socket通信[1][3]
任何两个网络进程通信时,必须确定各自所在的网络节点的 IP 地址和端口号。套接字 Socket
是一个通用的网络编程接口,它描述通信链路每个端点的 IP 地址和端口号信息。VC++的
MFC 类库中提供套接字类 CAsyncSocket,利用它可以方便地实现 Socket 编程。本文中提出
对 CAsyncSocket 进行 public 继承形成一个新类 NewSocket。在 NewSocket 中,重新实现虚
函数 Accept,Send,Receive,Close,OnAccept,OnSend,OnReceive,OnClose,OnConnect
(关于NewSocket类函数及下文提到的各Windows函数的定义请参见MSDN文档) 。如果以
TCP协议作为Internet网的地址系列协议,则服务器进程和客户进程Socket通信建立过程如下
图所述。其中,Windows 函数 socket用来创建一个SOCKET类对象,svrPort和svrAddress分
别表示服务器进程的端口号和IP地址,cltPort和cltAddress分别表示客户进程的端口号和
IP地址,buf1 和Buf1 分别表示服务器端的发送缓冲区和接收缓冲区,buf2 和Buf2 分别表示
客户端的发送缓冲区和接收缓冲区,buf1_len,Buf1_len,buf2_len,Buf2_len分别表示相应
缓冲区中待发送或接收的数据字节数。
服务器进程 客户进程
SOCKET svr_sock=socket(0,SOCK_STREAM,TCP); SOCKET clt_sock=socket(0,SOCK_STREAM,TCP);
NewSocket svrsock; NewSocket cltsock;
(svr_sock); (clt_sock);
(svrPort,SOCK_STREAM, (cltPort,SOCK_STREAM,
0,svrAddress); 0,cltAddress);
(svrPort,svrAddress); (cltPort,cltAddress);
( );
(svrAddress,svrPort);
(cltsock);
(&buf1,buf1_len); (&Buf2,Buf2_len);
or or
(&Buf1,Buf1_len); (&buf2,buf2_len);
( );
( );
当进行上行传输时,把发送者家庭网关看作客户端,把接收者远程控制中心看作服务器端;
而进行下行传输时,把发送者远程控制中心看作客户端,把接收者家庭网关看作服务器端。
在本文中,客户端进程和服务器端进程都采用多线程。在服务器端,负责创建Socket,绑定
端口,回应客户端请求,进行数据处理的线程是主线程,负责侦听Socket口中是否有来自客
户端的请求信息或数据的线程是副线程。主线程调用socket,NewSocket::Attach,
NewSocket::Create创建套接字,并调用NewSocket::Bind绑定端口后,再调用Windows 函数
CreateThread创建副线程专门用于侦听端口。副线程被创建后立即运行(可通过把
CreateThread函数中的形参dwCreationFlags设置为 0 来实现),主线程则调用Windows函数
SuspendThread(给形参hThread赋予本主线程的句柄)暂时转入休眠状态(后文中的使休眠和
唤醒操作都通过调用Windows函数SuspendThread和ResumeThread实现)。一旦副线程侦听到
有连接请求或断开连接请求或有数据到来,就立即唤醒主线程处理客户端的请求信息或数
据,自身进入睡眠。主线程处理完毕后,又唤醒副线程继续侦听端口,自身再次进入休眠状
态。服务器端主线程和副线程的工作流程见图 3,4。在客户端,主线程负责创建套接字,
绑定端口及数据处理。并设置两个副线程A和B,让副线程A负责向服务器端发出连接请求,
副线程B负责向服务器端发出断开连接请求。和服务器端的主线程一样,客户端主线程创建
套接字并绑定端口后,调用CreateThread函数创建副线程A,调用时将形参dwCreationFlags
设置为 0,使副线程A被创建后立即执行。再调用CreateThread函数创建副线程B,调用时将
形参dwCreationFlags设置为CREATE_SUSPEND使副线程B被创建后进入休眠状态,直到主线程
将其唤醒才能执行。主线程创建两个副线程后,自身进入睡眠。副线程A开始执行,它通过
调用NewSocket::Connect函数向服务器发出连接请求并等待服务器端的回应。若副线程A收
到来自服务器端的接受连接的应答,则唤醒主线程进行数据处理,自身进入睡眠。若副线程
A收到服务器端拒绝连接的应答,则再次向服务器端发出连接请求,直到收到接受应答为止。
主线程数据处理完毕后,检查当前Socket连接是否还存在。如果连接仍存在但客户端不再需
要与服务器端的连接,则唤醒副线程B,自身进入睡眠。副线程B调用NewSocket::Close( )
函数向服务器发出断开连接的请求。若收到服务器端同意断开连接的回应,则服务器进程与
客户进程的Socket连接被断开。若收到拒绝回应,副线程B再次向服务器发出断开连接申请,
直到申请成功为止。如果主线程数据处理完成后发现连接已经中断,但仍需要继续与服务器
收发数据,则可以再次唤醒副线程A重新建立连接。客户端主线程和副线程的工作流程见图
5,6,7。实践表明,采用多线程方法可以在服务器端和客户端CPU的业务繁重时,大大节约
机时,提高整个系统通信的实时性和可靠性。
Y
N
Y
N
Y
开始
创建 Socket
绑定端口
创建副线程 A
创建副线程 B
休眠
副线程 A 发
来唤醒消息?
数据处理
想断开连接?
唤醒副线程 B
结束
想重新连接?
唤醒副线程 A
连接仍存在?
休眠
副线程 B 发
来唤醒消息?
N
Y
N
N
Y
图 5 客户端主线程工作流程图
Y
N
数据到来?
数据处理
唤醒副线程
副线程发来
唤醒消息?
连接请求?
接受连接请求
连接建立
开始
创建 Socket
绑定端口
创建副线程
休眠
断开连接
请求?
接受断开连接请求
连接断开
结束
N
N
Y
Y
N
Y
N
Y
Y
N
侦听端口
有请求信息或
数据到来?
唤醒主线程
休眠
主线程发来
唤醒消息?
由主线程启动
图 3 服务器端主线程工作流程 图 4 服务器端副线程工作流程
5 小结
目前,GPRS 技术正在迅猛发展中。相信不久的将来,家庭网关采用 GPRS 技术无线接入互联
网的方案会取代现有的有线接入方案。由于家庭网关软件和远程监控软件进行 Socket 通信
时,经常发生家庭网关和监控主机过载的现象,从而影响通信速度和质量。实践表明,本
文提出的多线程方法能有效缓解家庭网关和监控主机的压力,保障通信的顺利进行。
参考文献:
[1]梁龙刚等.<<基于 GPRS 的远程无线监控系统软件设计>>[J].<<测控技术>,:38
[2]赵庆丽.<<GPRS 信息家电控制信息传输系统的研究>>[D].优秀博硕士论文库,2004:9-13
[3]MSDN Library 中关于 Socket 的帮助文档[M/CD]
[4]吕捷.<<GPRS 技术>>[M],北京:北京邮电大学出版社,2001
向服务器发出连接请求
收到接受应答?
唤醒主线程
休眠
主线程发来
唤醒消息?
N
Y
N
Y
由主线程启动
向服务器发出断开连接请求
收到接受应答?
唤醒主线程
休眠
主线程发来
唤醒消息?
N
Y
N
Y
由主线程唤醒
图 6 客户端副线程 A 工作流程 图 7 客户端副线程 B 工作流程
研究背景:
目前,GPRS 技术正在飞速发展。但现有的家庭网关产品大多采用有线接入技术接入外部数
据网。有线接入方法虽稳定可靠,但在很多方面存在缺陷。家庭网关软件和远程监控软件
进行 Socket 通信时,经常发生家庭网关和监控主机过载的现象,从而影响通信速度和质量。
本文针对这两个问题进行探讨,提出一种基于 GPRS 的无线接入方案和采用多线程技术进行
Socket 通信的新构想。
The Technology of the Network Connection
Based On GPRS In Information Appliance Area
Abstract:This paper first introduces the system architecture