
目的:
通过对C++编程语言的学习结合易思博公司的具体项目实例提高理论联系实际的能力以及通过公司员工式的的要求和上班制度和项目要求,锻炼学生以后走出社会参加工作后的职业所需要的素质和习惯,以提高学生的社会适应能力和项目技术开发的科研能力。
培训单位及职位信息:
(1)实习单位深圳易思博有限公司软酷实验室
(2)实习岗位:软件开发员,负责项目的外包以及实现。
任务:
通过对C++的语言和Visual C++的学习,基于MFC平台搭建一个软酷实验室网络监控平台。
形式和安排及步骤:
(1)项目分工:实习具体安排是以小组的形式去去实现项目工程的展开的:一个小组四个人的形式,首先是对项目模块的划分以及分工:窗口界面设计模块、数据库建立和连接更新模块、socket通信模块。其中本人负责的是窗口设计模块和socket通信模块,由于窗口设计部分比较容易实现,但也涉及到整个系统的架构和实现,所以一旦完成这个模块很快就转到socket编程模块了。
(2)项目报告:小组每周以小组形式提交一份项目周报,其格式严格按照公司提供的表格进行填写,另外每人每周提交一次周项目总结,每天提交一个项目日志。
(3)加强学习部分:对项目边界等技术难点进行视频培训以及自学的形式进行基础补给,为日后项目的开发顺利进行打下良好的基础。
(4)项目开发:各小组对项目的分工进行项目开发。
(5)项目提交报告:小组最终以最终的项目程序的形式上交到公司最后由项目经理等验收,验收过程要求附带ppt演讲和答疑;
内容:
(1)软酷实验室网络监控系统的应用以及简介:
随着社会的发展,科技的进步,作为信息载体的计算机网络通信日益显露出其举足轻重的地位。当今社会已步入了信息社会,知识经济将成为新世纪的主导产业。伴随计算机网络技术的的逐步推进应用,计算机通信以及监控系统已在科研、生产、商业、服务等许多方面创造了提高效率的途径。我们应该尽快使用现代化管理设备、管理手段、管理方法。现代化管理的实施需要协调发展,学生信息管理既然在管理系统中占有如此突出的重要地位,在管理现代化的浪潮中,学生信息网络管理现代化也需同步进行,才能使现代化管理在社会化大生产和当代科学技术发展中起到放大和增产的作用。实现学生信息网络管理现代化,使从事管理工作由原来凭个人或少数人的经验作决策,逐步上升到按事物的内在规律的科学高度办事,做到物质与精神相结合,抽象与具体相结合,定性与定量结合,静态与动态相结合,现状和未来相结合,个体与群体相结合。至于先进的科技手段,除科学地运用原有的生物、化学、物理、机械等手段外主要是运用当代最新科学技术之一的电子计算机来为教学信息管理现代化服务。
结合上述的观点,软酷网络监控系统应运而生:软酷卓越实验室实训平台是一个分布式、可扩展的开放的平台,采用了大量相对的开源工具组件,并通过软酷网平台进行衔接和集成,提供教学、项目管理、交流沟通、企业服务、IT外包等功能,并参与全球化软件项目开发和交付。目前COE教学对网络质量的依赖程度比较高,由于异地的网络类型各不相同,网络速度的不稳定对远程视频教学有极大影响,为了提高教学质量,须尽快建立COE网络质量监控体系。
所谓系统,就是在一定条件下,由相互作用、相互依赖的若干组成部分结合而成的,并具有特写功能的有机整体。从一般意义上讲,系统由输入、处理、输出、控制与反馈的四个基本部分组成。在系统理论中,系统分析是指对系统性能的理解。系统最佳化是系统设计成综合的内容。系统工程即用教学方法进行系统分析或优化,把传统的组织管理工作总结成技术并使之数值化。用系统工程来分析系统问题是比较科学的,利用系统工程这门学科的概念和原则,来进行网络辅导和培训管理方面的工作,是实现教学信息管理现代化的重要途径和有效手段。基于卓越实验室的网络架构,通过监测卓越实验室的各服务器到各客户端的网络状况,就能了解到当前的带宽瓶颈;通过分析历史数据,可掌握网络变化的规律,为教学计划作出指导。
网络监控管理系统的基本功能,目前尚无统一的说法。根据现代的网络课堂的工作的现有材料和工作特点分析来说,网络监控管理系统的基本功能,我们认为有如下两大方面:
(1)客户端:客户登录、注册以及信息修改等
服务端:管理员注册,以及信息管理、用户管理、网络状态监控和动态数据库的连接等具体如下图所示
1、客户端
对客户端程序进行配置。
1)客户端开通
需要在每个终端的所在地进行安装,并连线开通。
必须在开通之前向系统管理员活动注册ID和开通密码。
2、服务端
维护远程终端,维护系统正常运转,监测网络状况。
1)实时察看网络状态
负察看各终端的网络状态是最常用的功能,需要在主界面上直观显示,内容包括:
终端名称
所在城市
是否在线
上行速度(KB/S 指终端到服务器的传输速度)
下行速度(KB/S 指服务器到终端的传输速度)
最后测试时间
2)察看历史网络状态
主要功能有:
通过分析在一段时间内的网络状态的变化,能够掌握大致的规律,从而更好的适应网络状态的变化。
历史网络状态的查询通过指定时间范围,察看网速的变化曲线。
3)察看/修改客户端资料
弹出的资料对话框中包含客户端的各项资料,资料项包括:
客户端ID
客户端名称
所在城市
开通时间
备注
4)察看客户端电脑配置信息
弹出的信息对话框中包含客户端电脑配置的各项信息,信息项包括:
内存
CPU使用率
计算机名
地址等
5)注册新终端
注册过的终端才允许开通,注册后新的终端将出现在监控的终端列表中。
6)删除终端
删除后相应客户端即无法和服务端通讯,列表中也不存在相应终端。
7)获取开通密码
注册过的终端才允许开通,注册后新的终端将出现在监控的终端列表中。
应用技术:
1. 开发语言:C++
2. 数据库:Oracle/MySQL/SQL server
3. 开发工具:Microsoft Visual Studio 2005
4. 框架:MFC
5. 版本控制工具:SVN
6. Bug跟踪工具:Bugzilla
技术难点:
1)C++多线程编程
2)MFC类库的应用
3)ADO接口使用
4)Socket网络编程
5)数据统计
6)数据交换
(2)实习过程:
本人主要是负责项目界面的实现以及socket通信的实现连个子模块的。由于自己在C++编程尤其是Visual C++没有基础,所以第一个星期基本都是靠着在图书馆借的参考入门书探索着前进的。通过学习,深入认识到,C++的面向对象的编程理念,其中MFC架构是一个很好的应用说明,他是windows系统已经封装好的类或者函数类,用户只需在进行编程设计时,只需要简单的在窗口中添加所需的控件就能够实现窗口式的开发,大大的缩短了项目开发的周期。
所谓的MFC即微软基础类库(MFC:Microsoft Foundation Class)是微软为Windows程序员提供的一个面向对象的Windows编程接口,它大大简化了Windows编程工作。使用MFC类库的好处是:首先,MFC提供了一个标准化的结构,这样开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是“站在巨人肩膀上”,从一个比较高的起点编程,故节省了大量的时间;其次,它提供了大量的代码,指导用户编程时实现某些技术和功能。MFC库充分利用了Microsoft开发人员多年开发Windows程序的经验,并可以将这些经验融入到你自己开发的应用程序中去。 对用户来说,用MFC开发的最终应用程序具有标准的、熟悉的Windows界面,这样的应用程序易学易用;另外,新的应用程序还能立即支持所有标准Windows特性,而且是用普通的、明确定义的形式。事实上,也就是在Windows应用程序界面基础上定义了一种新的标准——MFC标准!
熟悉了MFC的概念之后接下来就是socket通信的知识的学习,经过历时一周的学习,终于对socket通信的过程有所了解,具体介绍如下:
在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的
建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:
首先服务器方要先启动,并根据请示提供相应服务:(过程如下)
1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。
2、等待客户请求到达该端口。
3、接收到重复服务请求,处理该请求并发送应答信号。
4、返回第二步,等待另一客户请求
5、关闭服务器。
客户方:
1、打开一通信通道,并连接到服务器所在主机的特定端口。
2、向服务器发送服务请求报文,等待并接收应答;继续提出请求……
3、请求结束后关闭通信通道并终止。
二、基本套接字
为了更好说明套接字编程原理,给出几个基本的套接字,在以后的篇幅中会给出更详细的使用说明。
1、创建套接字——socket()
功能:使用前创建一个新的套接字
格式:SOCKET PASCAL FAR socket(int af,int type,int procotol);
参数:af: 通信发生的区域
type: 要建立的套接字类型
procotol: 使用的特定协议
2、指定本地地址——bind()
功能:将套接字地址与所创建的套接字号联系起来。
格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);
参数:s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。
其它:没有错误,bind()返回0,否则SOCKET_ERROR
地址结构说明:
struct sockaddr_in
{
short sin_family;//AF_INET
u_short sin_port;//16位端口号,网络字节顺序
struct in_addr sin_addr;//32位IP地址,网络字节顺序
char sin_zero[8];//保留
}
3、建立套接字连接——connect()和accept()
功能:共同完成连接工作
格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);
SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);
参数:同上
4、监听连接——listen()
功能:用于面向连接服务器,表明它愿意接收连接。
格式:int PASCAL FAR listen(SOCKET s, int backlog);
5、数据传输——send()与recv()
功能:数据的发送与接收
格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);
int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);
参数:buf:指向存有传输数据的缓冲区的指针。
6、多路复用——select()
功能:用来检测一个或多个套接字状态。
格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,
fd_set FAR * exceptfds,const struct timeval FAR * timeout);
参数:readfds:指向要做读检测的指针
writefds:指向要做写检测的指针
exceptfds:指向要检测是否出错的指针
timeout:最大等待时间
7、关闭套接字——closesocket()
功能:关闭套接字s
格式:BOOL PASCAL FAR closesocket(SOCKET s);
完成了两个关键的技术要点之后就是对整个系统进行配置和编程实现了。这样以数据库为归宿,以socket通信为载体的整个网络监控就在小组的努力下慢慢的逐步的成型了。
总之,网络的广泛应用,网络监控信息管理系统的建立,适应了社会经济发展的客观要求,大大提高了工作效率,它把教师从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动和其它教育教学的活动中去;它能使决策、计划和其它管理活动更加科学、精确、灵活。随着我国经济、科技的发的,人才开发管理的加强,我们一定要努力创造条件,促进使用计算机网络远程教育的信息管理现代化。为建设中国特色的社会主义而努力奋斗。
心得体会:
四年的大学生活,其实最终学习到东西就是自学的能力。这次实习也不例外,其实走到哪里,人都是一个学习的过程。同时也感受到了实践出真知的道理,其实能够在那么短的时间内掌握一门语言并应用与项目开发,很大程度上都是有个项目的牵引和指导,使得整个学习的过程都很有条理,很有方向,这样就不会过于盲目的学习同时也加深了对所学知识的印象,可以说,理论与实践是一个相互促进的良性循环的过程。唯有把理论与实践相结合,才能更好的去创造.另外,在项目开发的过程中我们也遇到了各种各样的技术问题,但是经过我们的团队合作的精神,一个个的难点都被我们组员一起攻克,看着大家努力的汗水和收获的成果,大家的心里都会有种无言的感动。也许这就是团队精神给我们带来的欢乐吧。其中,印象或者教训最为深刻的是:由于一开始我们对真个项目的架构还不怎么了解导致到我们开始的时候项目模块的划分和项目的分工出现了一点失误,拖延了整个开发的效率以及周期,这才认识到开始的工作特别是项目的规划或者计划对于一个项目来说是多么的重要。他关系到项目是可实现以及开发的效率的种的问题。在以后的工作中一定会多加注意和改正的。
为期多日的上机项目的实习,我上网查阅了一些相关的应用知识,提高了我的动手能力,同时也让我了解到了自己的不足,我会继续努力,完善自我,为社会主义现代化建设做贡献.对于学校的精心安排和项目经理的用心辅导非常感谢.
