基于智能手机的校园短信网关系统的设计与实现
扫描二维码
随时随地手机看文章
随着信息技术的高速发展,校园中教务人员、教师以及学生之间的交流也将信息化。网络的快速发展已经为校园里的交流提供了快捷的渠道,但是还不能达到即时信息交流的效果。手机短消息服务提供了随身携带即时信息交流的功能,二者结合起来,PC机通过网络与手机通信。本文提出的校园短信网关系统,将为校园教务人员、教师和学生提供了更加方便的交流平台。
1 校园短信网关的结构
1.1 物理结构
本校园短信网关系统主要由客户端PC机和WiFi手机组成。客户端PC机通过路由器接到互联网上,WiFi手机通过无线路由器接到互联网上,客户端PC机就可以通过网络与WIFI手机通信,WiFi手机通过GSM网络与其他用户手机通信。实现了客户端PC机通过WiFi手机作为短信网关与手机用户之间的通信。校园短信网关的物理结构图如图1所示。
1.2 逻辑结构
校园短信网关客户端包括调用接口、通信协议封装与解析、SocketClient三部分。短信网关采用向上层系统提供调用接口,上层其它系统通过调用接口,向请求中心发送请求(发送短信和接收短信)。在收到上层调用命令后,请求中心将请求命令封装成自定义的通信协议,通过SocketClient将请求发送给短信网关服务器。
校园短信网关服务器的SocketServer监听端口状态,监听到客户端发送的命令后,就通过通信协议解析模块将命令解析,之后调用Windows Mobile SDK提供的手机底层API执行相应的功能。校园短信网关的逻辑结构图如图2所示。
2 短信收发功能的设计与实现
2.1 短信发送
校园短信网关系统的客户端调用短信网关接口,设置收信用户号码、短信内容、发送方式、发送时间等信息,达到向目的用户发送短信的功能。其中,发送方式分单发和群发;发送时间分立即发送和定时发送。
校园短信网关系统发送短信过程如图3所示。用户在客户端PC机上设置短信发送信息,提交给请求中心,请求中心将短信信息封装后通过Socket发送给服务器。短信网关服务器收到短信发送请求信息后,根据发送时间的不同分为两种不同的处理流程。如果短信发送信息中的发送方式是立即发送,则直接调用短信发送服务将短信发送到目的手机号码;如果是定时发送,则将短信发送信息写入数据库的定时任务表中。系统设置定时器,每隔一段时间查询该数据库的定时任务表,发现定时任务的时间到了,则将该条短信发送出去。例如,定时任务表中的一条记录为:[时间2009-09-10 10:00:00 手机号码138********,内容“教师节快乐”],短信网关服务器的定时器扫描任务表时,发现该定时时间到或者超过的时间在允许误差范围内,就将该短信发送至目的手机。
2.2 短信接收
用户可以在客户端通过短信网关服务器接收来自不同手机用户发送的短信,达到不同的效果(例如学校师生互动短信、校园活动投票、选举投票,节日祝福等)。
根据短信接收的功能需求将接收方式分为4种:(1)查看所有收到的短信,类似于手机的收件箱,用户可以查看收到的所有短信;(2)查看一段时间内所有收到的短信。用户在客户端设置起始时间和结束时间,向服务器发送请求该时间段内的所有短信。例如,用户设置了短信投票活动,在活动截至后,需要统计投票结果时,用户向服务器请求接收所有投票短信内容;(3)查看所有未被查收短信;(4)查看数据库接收短信日志表中没有被查收的短信记录。
用户在PC机客户端接收短信实现的过程如图4所示,在短信网关服务器上设置一个用户信息配置表,该表包含用户名、密码和对应字头。服务器则将所有接收的短信存储在短信接收日志表中。用户在客户端向服务器发出查收短信请求,服务器在用户信息配置表表根据用户名查找该用户对应的字头,然后在短信接收日志表中根据字头查看短信,将所有符合该用户要求的短信封装后发送给用户。
3 客户端PC机与手机通信协议的设计
校园短信网关服务器与客户端用UDP包进行通信。UDP数据包的总长度为65 535 B,可以放进一个IP包,使得UDP/IP协议栈的实现非常简单、高效。UDP数据包的总长度减去UDP包头本身所占的8 B,UDP服务中的最大有效载荷长度为65 527 B。当传输的数据大于65 527 B时,应将数据包分为几个小于65 527字节数据包来传输。校园短信网关服务器与客户端之间的通信协议分为三个部分:建立连接阶段,数据传输阶段和会话结束阶段。
3.1 建立连接阶段
(1)客户端请求连接
CONNECT SMS/1.0\r\n
表示发出连接请求,自定义的协议类型和版本号
From:<sms:192.168.0.1:8868;username=stone;password
=123456>\r\n
表示发送用户的IP地址端口,用户名和密码
User-Agent:SMS Client Release 145\r\n\n
表示客户端的名称和版本
(2)服务器端响应
服务器首先验证用户是否合法,若验证合法,则服务器为该用户随机生成一个15位的连接Session-ID,并将该Session-ID发送给客户端,在后续的数据传输阶段和会话结束阶段,客户端发送的请求信息中都应包含Session-ID,以验证用户在一次协议传输的合法性。
SMS/1.0 100OK\r\n 连接成功的标识
Content-Type:application/smsc\r\n 内容的类型,包括文本内容传输和SMS控制协议传输
Content-Length:0\r\n 内容长度,应大于等于0,小于等于自定义协议的长度最大值
Session-ID: 68a354de789ecef\r\n\n 服务器随机产生的15位ID
若验证不合法,则服务器返回不合法的类型。
SMS/1.0 Error100\r\n Error100表示错误类型
3.2 数据传输阶段
根据校园短信网关系统的功能需求来定义数据传输的方式,每种方式定义一种通信协议的标识符,例如即时发送的标识符为POST,以即时发送为例说明数据传输阶段的协议内容。
(1)客户端发送:
POST SMS/1.0\r\n
Session-ID: 68a354de789ecef\r\n
User-Agent:SMS Client Release 145\r\n
Date:2009-09-10 10:00:00\r\n
Message-Type:IMMEDIATE,GROUP\r\n
From: <sms:192.168.0.1:8868;username=stone>\r\n
To: 13636066060,13476240028,13884053687\r\n
Content:Happy Teachers’Day!\r\n
Content-Type:application/text\r\n
Content-Length:N\r\n\r\n
(2)服务器反馈信息:
如果服务器处理失败,则返回错误编号:
SMS/1.0 Error400\r\n
如果服务器处理成功,则返回成功信息编号:
SMS/1.0 200OK\r\n
3.3 会话结束阶段
会话结束有两种情况,一是客户端出现异常情况,在规定时间内没有反馈信息,则服务器关闭连接销毁Session-ID;二是客户端正常,且在一次会话结束后,由客户端在超时允许范围之内发出会话结束请求。
(1)客户端超时
服务器不做任何发包工作,关闭通信连接,销毁Session-ID,清除此次会话的相关资源。
SMS/1.0 Error400\r\n 表示客户端超时
(2)客户端发起会话结束请求
客户端发送:
BYE SMS/1.0\r\n 表示结束会话的标识
Session-ID: 68a354de789ecef\r\n\r\n
服务器反馈:
SMS/1.0 200OK\r\n 表示会话结束成功
Session-ID: 68a354de789ecef\r\n\r\n
本文所设计的校园短信网关系统通过无线网络实现了PC机与手机之间的通信,其重点是通信协议的定义以及对短信收发请求和短信内容的封装与解析。其次,本短信网关系统中调用了Windows Mobile SDK提供的手机短信收发接口函数,有利于将来校园短信网关系统的功能扩展。