《基于C的短信收发系统的设计与实现毕业论文(DOC 24页)》由会员分享,可在线阅读,更多相关《基于C的短信收发系统的设计与实现毕业论文(DOC 24页)(25页珍藏版)》请在金锄头文库上搜索。
1、季徵研技冬院本科生毕业论文(设计)题目:基于C的短信收发系统的设计与实现姓名:秦正阳学 院:数理信息与工程专 业:计算机科学与技术班 级:11级计算机4班学 号:1881110415指导教师:刘斌 职称:副教授2015 年5月4 日安徽科技学院教务处制摘要 1关键词 1引言 11 系统概述 11.1 研究系统的目的和意义 11.2 国内外研究状况 21.3 应用前景 22 系统知识简介 22.1 GMS协议介绍 22.2 TCPsocket 编程模式 32.3 多线程编程的介绍 42.4 开发工具 53 短息收发系统分析 53.1 需求分析 53.2 可行性分析 53.2.1 技术可行性 53
2、.2.2 经济可行性 53.2.3 操作可行性 64 系统的设计和图分析 64.1 保存信息的内容 64.2 一级和二级服务器端 64.3 client 端 64.4 系统的总体设计 75 系统的实现和代码分析 85.1 一级server 85.2 二级server 95.3 client 端 116 . 系统测试 176.1 测试的目的及意义 176.2 一级服务器的性能测试 176.3 二级服务器的性能测试 186.4 本系统测试的总结 187 开发总结 18致谢 18参考文献 19英文摘要 20o基于C的短信收发系统的设计与实现计算机科学与技术专业指导教师秦正阳刘斌摘要:本短信收发系统是
3、基于 Linux下c语言,多线程,GMSS信协、议,select非阻塞方式, 采用TCP的连接和传输方式和网络编程来实现的。我要做的就是模拟手机短息的形式来实现短信的收发,一个总服务器去管理多个二级服务去,然后二级服务器去管理多个客户端,通过设计二层服务器的形式来实现服务器的负载均衡,这样同号码段的号码就可以通过所在号码段的二级服务器实现客户端的短信的收发,不同号码段的信息要通过一级服务器进行转发实现客户端的信息收发,通过这个系统的实现可以把以前所学的知识联系起来,得到巩固和自己编程能力的提升。嘲箱闰属侈瘗睐板尻赖。 关键词:c/s;短信收发;多级服务器;负载均衡 ;多线程.“WQIWMMaC
4、lliOMMIMmNBYBIIIIilMMUppMgfr 随着网络的普及,人类生活越来越依赖网络,人与人之间的交流也越多的在网络上进行。由于交流的实时性,即时通讯系统也被越来越多的人所使用。即时通讯系统除了普通的生活上的交流,也在商业交流中越来越受到重视,它可以是个很好的与客户之间即时交流的平台,在时间上它要比电子邮件更加具有实时性, 而费用相对电话交流也要经济的多。在这种环境下,聊天软件作为一种即时通讯工具,得到了很好的发展。因此,设计开发一个可以灵活用于网站,论坛,公司或企业内部交流的聊天工具很有必要。残鹫楼静铸腌翻遮藏随着网络的的发展,网络上出现了各式各样的聊天工具,有国外的也有国内的,
5、但是他们的用途都一样,都是用来通信。纵观网络聊天工具的发展,市面上用的做多的莫过于QQ MSN YY微信等聊天工具,这些聊天工具针对不同的人 群有不同的选择,大多数的人用 QQ微信进行聊天、发心情、写日志、发说说、 图片等;工作上的人大多数使用 MSN这是国外的聊天工具,它不像 QQ那样能 够轻易得到别人的信息,从而带来骚扰,MS业须使用邮件进行聊天,用它也显示其专业性;像YY这样的聊天工具,有玩游戏的在使用,有网络教学的在使用, 群体不限,根据自己的爱好可以随意选取。还有基于网页的聊天工具,如新浪网聊天室、网易聊天室等。如新浪网聊天室,该网站为不同年龄、不同职业、不同地区、 不同爱好的网友量
6、身定制了数百个不同主题的 “房间” 。 以新浪聊天室看,聊天室呈现积聚人气的作用,并开设不同主题的聊天室以使网名具有针对性的使用聊天室。针对不同年龄层开设的额 “同龄话题”使各年龄层次的用户话题和选择自己聊天对象群体,找到自己合适的聊天话题,并且针对目前社会流行的热门话题和流行话题都有相应的主题室。r钢极飘镇桧猪锥。在网络发展日益成熟的今天,各式各样的网络聊天工具已经展现在我们的眼前。 他们之间都是大同小异,实现的功能各不相同;有些聊天工具只是实现聊天通讯,传输文件等简单的功能,而有些聊天工具做的非常全面,还有这视频,语音, 以及娱乐性的游戏等功能1。 说到QQ, 应该没有人不知道吧?它是腾讯
7、出台的一款聊天工具,这也是在国内出现的比较早的聊天工具,历经十几年的发展,已经发展到几亿用户的规模。它实现的功能非常多,有语音、视频、文件、应用等功能。 其最主要的就是应用功能,这些应用不仅给用户带来了乐趣,而且也给 自身带来了巨大的利润,腾讯在 QQ的应用中添加广告、设置需购买的道具等来 获取利益。价钱看似比较低,但是由于用户的基数庞大,每年的利润也非常高。这样的聊天工具在开发技术上已经没有什么难题,并且具有广泛的应用和市场空 间。弹贸摄尔霁毙揽砖卤尻。2系统知识简介应用了 GMS*议的结构体中包含了信息当中许多重要的信息, 如下面的结构 体所介绍的信息,我也应用了 GMSJ息协议来填充自己
8、数据结构,其中我的短信 收发用到的数据就给其赋上自己需要的值2。邠戢箧翻翱:类蒋番存放信息的结构体,主要存放信息的发送时间,信息的长度和具体的信息。typedef struct data char time30;/ 信息发送的时间int count;/ 信息的长度char message160; / 信息体data;发送信息的信息头部,存放一些重要的信息和进行信息验证的机制。typedef struct submit_head unsigned char sca_len;/ 短信息中心的地址长度unsigned char sca_type;/ 短信息中心号码类型unsigned char sc
9、a_add11;/ 短信息中心号码unsigned char file_tou; / 文件头字节unsigned char pdu_type;/PDU 类型unsigned char da_len;/接受方地址长度unsigned char da_type;/接受方地址类型unsigned char da_add11;/ 接受方地址协议标示数据编码方案信息有效期/用户数据长度unsigned char pid;/ unsigned char dcs;/ unsigned char vp;/ unsigned char udl;submit_head;接收信息的信息头部,也是存放一些重要的信息。
10、typedef struct deliver_headunsigned char sca_len;/服务中心的地址长度unsigned char sca_type;/ 月艮务中心类型 unsigned char sca_add11;/服务中心地址unsigned char pdu_type;/PDU 类型 unsigned char oa_len;/发送方地址长度unsigned char oa_type;/发送方地址类型unsigned char oa_add11;/发送方地址unsigned char pid;/协议标志unsigned char dcs;/数据细鸣方案iunsigned
11、char stcs7;/服务中心时间戳unsigned char udl; /用户数据长度deliver_head;发送信的一个完整的结构体。typedef struct submitsubmit_head sub_head;/ 发送协议头结构体变量data user_data; /用户数据结构体变量submit;接收信息的一个完整的结构体。typedef struct deliver一deliver_head delv_head;/接受结构体头变量data user_data; /用户数据结构体变量deliver;TCP是一种面向连接(连接导向)的、可靠的、基于字节流的 运输层(Transp
12、ort layer )通信协议,由 IETF 的 RFC 793说明(specified ) 3。在 简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UD比同一层内另一个重要的传输协议。TCP建立连接之后,通信双方都同时可以进行数据 的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。 厦礴恳蹒骈畤翥继骚。如下图1基于TCP的客户/服务器模型的socket工作流程图4。TCP服务端:客户端:10Socket ()一直阻塞客户端连接到达Connect ()建立连接I(tcp三次握手)4Recv ()Send ()服务请求处理请求Recv ()对于一个程序来说我们
13、可以把它分成若干个独立执行的执行流,我们把这种称之为线程,线程可以提供多任务的处理能力5。在现在的大型编程中普遍使用 多线程和多进程,应用多线程是为了更好的设计程序和编写和测试程序,这样一 个线程来实现一个独立的功能,增加程序的可执行性。我们在使用多线程编程, 要熟练的掌握线程之间的通信和同步等问题,还要了解每个线程的优先级,这样才能很好使用多线程来解决实际的问题。茕桢广啊选块网糊目。启动一个线程要用到 pthread_create(&tid,NULL,pthread_func,NULL) 函数来 实现,tid是线程号,每个线程5有一个独立的线程号,-pthread_func()是线程 要调用
14、的线程函数;鹅娅尽揖鹤惨魔茏(。在多线程的使中要用到 pthread_join()来等待要结束的线程,来确保线程能 顺禾I执行完成6 0麓丛妈翅为瞻债蛭练私在多线程访问临界资源时,要使用到互斥所进行加锁,用到 pthread_mutex_init()来初始化一个锁,pthread_mutex_lock()来对临界资源来 进行加锁,pthread_nutex_unlock 来对加锁的资源解锁,最后还要用到 pthread_mutex_destory()来对锁的销毁和资源的释放。在访问临界资源时为了 提高系统的处理效率要使用到条件锁和信号量来辅助完成,条件锁 pthreah_cont_wait() 7 0 3tm圣僮1t龈讶骅汆。(1)开发语言:本短信收发系统主要应用了 C语言进行开发的,应用的是linux 下C语言和脚本语言shell来共同完成的。其中主要应用到的知识是Linux下的 网络编程应用TCP进行连接的,采用了多线程的编程思想和最后用到脚本语言 shell来对运行步骤进行优化。渗彩呛俨匀谓鳖调砚金帛。(2)开发硬件平台:一部有redhat虚拟机的windows系统的个人pc。(3)开发软件平台:Redhat enterprise linux 5,编译器vi