通信软件实训文档(5篇可选)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信软件实训文档(5篇可选)
第一篇:通信软件实训文档
北京邮电大学软件学院
2010-2011 学年第 1学期实训项目文档
(每个项目小组一份)
课程名称:全日制研究生实训
项目名称:通信软件实训
项目完成人:
指导教师:程保中,雷友珣,谢锦,陆天波,孙艺
日期:2012年3月2日
●JAVA语言的聊天室实现
一、实训项目的目的和要求:
目的:理解Socket的原理,熟悉JAIN-SIP协议规定的通信工程要求:实现一个有GUI界面的JAVA聊天室系统
二、实训项目开发环境:
Eclipse、Windows
三、实训项目内容:
1、设计思路
客户端:以服务方主机地址和端口号为参数调用 Socket 类的构造函数去创建一个Socket 对象.创建过程包含了向服务方请求建立通讯连接使用 Socket 对象的 getInputStream()和 getOutputStream()方法创建用于网络传输的输入/输出流
使用所得的网络流对象读写数据,网络流对象将读写转换成对Socket 数据的接收和发送
工作完毕, 关闭网络流对象
服务器端:以某端口号为参数调用 ServerSocket 类的构造函数去创建一个 ServerSocket 对象
调用被创建的 ServerSocket 对象的 accept()方法在指定端口监听客户方的连接请求
收到客户请求后,accept()方法返回一个新建的Socket 对象, 该对象代表和客户方建立起来的通讯连接在服务方的通讯端点
使用 Socket 对象的 getInputStream()和 getOutputStream()方法创建用于网络传输的输入/输出流
使用所得的网络流对象读写数据,网络流对象将读写转换成对Socket 的数据的接收和发送工作完毕, 关闭网络流对象
2、系统总体框架
系统的主要功能:
本系统由登陆界面、服务器界面和客户端界面三部分组成,服务器端可以控制打开或关闭端口和服务,并且可以监视在线用户数量。
用户则在登录界面输入相应的验证信息才能登录要系统,从而通过客户端进行聊天,发送的消息将通过服务器广播给所有在线用户,达到群聊的目的。
3、用例介绍及用例图
※用例名称:登陆
主要参与者:客户端用户
涉众及其关注点:用户希望能顺利登陆系统并进行交流
服务器端希望能对用户进行验证并返回验证信息前置条件:用户必须通过验证
成功保证:服务器根据用户提供的信息进行验证并通过主成功场景:用户向服务器发送验证信息
服务器对信息进行验证
向用户返回验证结果
成功登陆到服务器※用例名称:聊天
主要参与者:客户端用户涉众及其关注点:用户希望能顺利进行聊天,并且保护隐私
服务器要保证聊天的顺利进行
前置条件:用户已经登陆系统
成功保证:两个或更多用户登陆服务器
主成功场景:用户A发送信息
服务器接收到信息
服务器将信息转发给用户B 用户B进行回复
服务器收到信息并转发给用户A ※用例名称:启动服务器
主要参与者:服务器
涉众及其关注点:服务器希望能正确启动,各个模块能正常运行前置条件:服务器程序是正确的成功保证:服务器端的硬件支持主成功场景:按下服务器启动按钮
服务器程序开始运行
程序成功运行,进入服务状态用例图如下:
4、领域模型
5、顺序图:
启动服务器顺序图
登陆顺序图
聊天顺序图
6、类图
四、程序开发成果
先打开服务器端程序,输入端口号,运行之后打开客户端,输入服务器端的IP地址和端口号,连接成功后可开始进行对话。
聊天窗口如下:
五、总结
通过本次实训项目的练习,我们充分理解了Socket的原理以及SIP协议,并对SIP在JAVA中的实现方法——JAIN-SIP作为API来调用有了一个比较全面的认识。
对JAVA可视化界面的处理能力也有了很大提高。
JAVA是一门面向对象的语言,通过对它的研究,加强了对面向对象语言中类和对象的使用。
●C语言Socket聊天室实现
一、实训项目的目的和要求:
目的:通过socket实现Linux环境下的点对点通信。
要求:掌握Linux环境下socket编程的基本过程;掌握c语言的socket套接字的编程思想
二、实训项目开发环境:
Linux
三、实训项目内容
1、问题分析:如何通过socket实现Linux环境下的点对点通信。
2、设计思路:
网络套接字(Socket)接口上TCP/IP网络应用程序接口(API),它提供了许多函数和例程,程序员可以使用它们来开发TCP/IP网络应用程序。
简要步骤如下:
(1)建立一个Socket.(2)按要求配置socket,将socket连接到远程主机或给socket指定以各本地协议端口。
(3)按要求通过socket发送和接受数据。
(4)关闭此socket。
在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递。
所以多个客户端之间的通信就变为了客户端与服务端的通信。
所以,采用客户/服务器模型进行网络聊天需要分别编写服务器端和客户端的程序,服务器和客户端之间相互通信的同步关系和各自的程序流程。
如图所示:Tcp服务器Socket()Tcp客户端Socket()建立连接Bind()Listen()Connect()Accept()阻塞直到有客户端连接请求数据Write()Read()处理请求回应数据Read()结束连接Write()Close()Read()Close()
3、实验过程及说明(使用TCP/IP):
(1)监听连接
利用socket、bind、listen建立连接,步骤是:
1)用socket函数初始化socket,创建新的sockfd。
Sockfd = socket(AF_INT,SOCK_STREAM,0)2)IP地址的处理参数说明:inet_addr 函数 INADDR_ANY 该函数把由小数点分开的十进制IP 地址转为unsinged long 类型,而在实验中所使用的为INADDR_ANY,使用利用自己的IP地址自动填充。
a)利用bind函数绑定端口和IP地址。
My_addr.sin_family=AF_INET;/*将地址族类型设定好*/
My_addr.sin_port=htons(MYPORT;/* 将端口给其赋值*/ My_addr.sin_addr.s_addr=INADDR_ANY;/*用连接地址自动填充ip*/ Bind(sockfd,(stuct sockaddr*)&my_addr,sizeof(stuct sockaddr));/*sockfd 是分配的socket名字,my-addr则便是分配好的端口与IP,用bind绑定*/ b)利用listen监听请求(2)发送请求
1)利用gethostbyname获取主机信息。
2)初始化socket端口。
3)利用connect函数将自己的IP地址等信息发送到主机,等待主机调用accept函数来接受请求。
(3)主机接收请求,进行数据通信1)主机利用accept接收请求。
2)创建子进程,显示欢迎信息;
3)接收返回信息,显示连接成功,并推出连接;4)关闭客户端口socket;
5)关闭服务端socket,结束子线程。
4、实验项目结果及分析
结果分析:
该测试是在一台计算机上进行的,若要实现两台计算机间的点对点通信,只需修改相应的IP地址和端口号即可。
如图所示,该系统实现了P2P通信,即通信双方之间可以相互发送和接收消息,达到了预期目的,满足了老师的要求和用户的需求。
四、总结
Linux环境对于我们都是一个陌生的环境,通过这次对Linux环境下的socket编程以实现双工通信,使我们小组成员c语言编程能力有了提高和对Linux和对Linux的gcc编译环境有了进一步的认识。
使我们在宏观上认识了Linux,相信对我们以后学习Linux会有很大的帮助。
●基于O-SIP的 Socket聊天室开发
一、实训项目的目的和要求:
目的:完成一个基于控制台的聊天室,最基本要实现群聊和私聊内容;要求:掌握o-sip实现sip协议;
二、实训项目开发环境:
Windows、VC++2010
三、实训项目内容
1、问题分析:
项目实现的是一个基于sip的简单聊天程序,要求用c/c++实现,可以应用exsip库,以及接口进行程序开发,要求聊天室实现基本的群聊和私聊功能,在此基础上可以进行进一步扩展,可以为提示哪个客户上线,哪个客户下线,客户端可以向服务器请求获得在线用户列表,操作简单易懂,系统要有一定的稳定性,并有一定的可扩展性。
2、设计思路:(1)总体设计
项目采用exosip接口进行设计,为了开发聊天室选择可以实现相应功能的接口,开发出来的聊天程序要实有高的效率可以及时转发客户端的发送的消息,要有一定的可靠性和灵活性,实现基本功能的基础上要有一定的扩展性。
(2)数据存储
要选出正确的数据结构能够存储用于通讯的数据。
(3)功能性判断
功能性需求要区别于其他消息,为了区分可以功能性需求和普通消息的区别可以设置一些格式。
(4)功能实现
为了实现群聊服务器端可以把客户端发来的普通消息进行广播给在聊天室的所有用户,实现私聊的时候服务器要把这条消息只发给指定客户端,不可以使其他人看到,如果客户端需要查看在线用户信息服务器要把信息发送给请求的客户端。
3、基本的流程设计(1)服务器设计流程图:
(2)客户端流程:
4、功能实现
基本的群聊和私聊功能都是通过服务器转发到的,当服务器接收到群聊的信息就可以进行广播,但接到私聊的信息就只发给接收方。
在客户端在接收数据采用一个接收线程定义是,static HANDLE hHandle1=NULL;定义一个句柄DWORD WINAPI rec_v(LPVOID p)用来定义一个线程,当需要进行调用时在相应的位置写上hHandle1=CreateThread(NULL,0,rec_v,NULL,0,NULL)。
发送数据
时采用while循环并且在发送数据是要判断是否是功能性请求消息,例如如果输入的是***cls那么这是求求清屏,那么客户端就不把这条消息发个服务器,并自身处理这个功能。
在服务器端不采用多线程,应为服务器子进行转发或者提供功能性需求,不需要自己输入什么,所以在一个while循环就可以实现基本功能了,并且在接收消息是要判断是否是功能性请求,如果是者进行功能性处理,比如当客户端发送***list时,服务器要把在线用户信息发给提出请求的客户端。
5、设计流程图(1)服务器端流程图:
服务器首先进行初始化工作然后等待客户端对他的连接并接受客户端发来的消息,如果接收到的数据是功能性请求则进行功能性处理,否则当作普通消息进行广播,判别是否是功能性请求的方法是客户端再发送功能性请求时在信息的头部加上***及请求类型,比如***list就是一个申请用户列表的请求,当服务器端接到***就解析后面的命令,当时sip:时表明这是一个新用户,然后服务器会在自己维持的用户列表中把新用户加进来,然后继续等待接收客户端信息,当收到list时会把在新用户信息发给起初请求的用户,当私聊时服务器会把这条信息转发个指定用户,而不去转发,这些操作结束后程序都会回到接收数据的状态。
(2)客户端流程图:
首先客户端完成基本的初始化过程,输入自己的名字和端口号程序会自动把输入转化成sip:name@ip:portde 形式去连接服务器,连接成功开启接收线程后不断监听是否有消息发送过来,当接收到消息后打印然后继续监听,当输入的消息不是功能性请求这个消息不做任何处理发给服务器,输入的消息是功能性请求消息时,会有两种处理一种是客户端可以自己处理的,这样客户端自己处理后继续等待键盘输入,比如清屏功能,当需要服务器协作完成时客户端会把消息进行加工然后发给服务器等待服务器合作处理,比如当向服务器请求显示在线用户是发给服务器的消息会在前面加上***list,这样当服务器接收到消息时解析***知道这是一个功能请求,然后再解析出list知道这是一个在线用户列表请求,然后在线用户列表发给请求的用户。
当收到
的功能性请求是退出或者私聊等处理过程和上面类似。
四、实训项目结果及分析
我们的O-SIP的聊天室系统的开发主要是基于控制台,由于开发时间比较仓促,所以我们仅仅实现了简单的消息收发的双工通信,界面还未实现美化等。
希望老师谅解。
服务端启动之后创建一个socket,将socket和本机的IP绑定
五、实训项目人员、进度安排及完整过程
六、实训项目心得及体会
项目基本实现了需求的功能,程序可以进行基本的私聊和群聊,在此基础上还可以进行在线用户查询,提醒所有用户是否有人上线或者下线,并且系统相对稳定,有一定的扩展性,通过此次实训学到了很多知识对网络编程有了一定的了解和深入,在实践编程中虽然遇到了很多问题但是通过组内和组件交流,都得到了很好的解决,多练了自己和别人的交流能力和团队精神,总之有很多的收获,并希望有机会能够多参与到这样的实训中。
通过这三周的实训,我们小组各个成员都在软件工程方面有所提高。
一开始构想时只有大体的思路,忽略了一些细节,因此在我真正做设计时发现有很多错误,有的时候要解决一个错误会花上很多时间,在做的过程中,有很多错误意想不到,有的错误却犯得很幼稚,不过这样对自身的排错能力能得到很大的提高。
比如一个组员在做java socket 聊天程序测试时候,他无论怎么运行都会出现错误,而且出现提示信息他也无法修改,浪费了他至少两个小时时间,最后因为在定义类的时候是小写,而在直接生成的类他把删去,又直接复制编程人员的程序。
这些细小错误让我深受感慨,它告诉了我编程细心重要,养成一个好的编程习惯更重要。
这次项目的完整开发,让我们有项目初步的思想,这次项目的开发让我把软件生成的流程从信息的收集,再写需求,再完成后台设计到编写代码,到测试,让我知道还有很多地方的不足。
更重要的是团队之间的合作,相互之间的交流,有时一个问题总是想不通,但每个队友负责的部分不同,所以想法也不同,交流之后,便有了新的思路。
这次课程设计的时间很紧迫,再加上各
方面的经验不足,也遇到很多问题,这个聊天系统还有很多地方没有完善,希望老师能谅解。
总的来说,这次课程设计对我很有帮助,我发觉老师上课讲的很多东西对我们都很有用,让我受到不少的启发。
感谢程保中教授,雷友询教授这三周来对我们的细心教导和使我们的通信软件知识有了很大的提高和其感谢孙艺,谢锦,陆天波三位老师在这三周内每天都陪我们在实验室,为我们解除疑惑,帮我们分析错误。
正是由于你们才使我们在自信心上有了大的增强,不再感觉做项目是个遥不可及和非常困难的事情。
这次工程实践的为我们有条理的梳理了我们所学的软件工程方法和编码技术。
使我们在以后的工作中敢于面对困难和向困难挑战。
第二篇:软件实训心得
武汉理工大学《工程软件应用训练》心得体会
工程软件应用训练
题目
学院
专业
班级
姓名指导教师
心得体会汽车工程学院车辆工程车辆1001熊欣
2012 年 8 月 30 日
AutoCAD使用心得体会
正如课程设计教学目的所言“从产品装配测绘、计算机绘图、三维CAD建模、参数化设计等方面进一步加深和拓宽学生在工程制图、机械CAD技术等课程中所学基本知识,结合实际机械产品(模型)设计的具体问题,培养学生理论联系实际认识和解决问题的能力,为后续专业课程和相关实践环节的学习奠定基础。
”通过这次软件实训,我深深的体会到自己在理论知识和工程应用上的不足。
我作为一名车辆工程的学生,之后到了工作岗位上,也许会从事设计方面的工作,这时学习CAD就至关重要了。
CAD可以将图示清晰明了的体现出来,让人一目了然,尺寸大小形状都有体现,是设计
者和实施者的桥梁,从一张CAD图纸可以看出设计者的构思,简单明了。
CAD实际用途的广泛性不仅体现在我们环境工程这个专业上,在其他的专业也有体现。
可以说CAD是今后我们软件应用的一个基础,无论是设计还是施工都要看懂CAD图,学会应用和绘制CAD图。
经过这两个多月的学习,我掌握了CAD制作的基本操作,简单了解了CAD的实际用途。
CAD即计算机辅助设计(CAD-Computer Aided Design),是利用计算机及其图形设备帮助设计人员进行设计工作的一种软件。
它是Autodesk公司出品的一款著名的专业制图设计软件,功能非常强大,已经成为国际制图设计的标准软件。
在机械、建筑、服装、电子等各个方面都有应用。
尤其在机械行业是离不开这个软件的。
CAD可以绘制机械、建筑、航空、石油等多方面的二维平面图形和三维立体图形等等,它的使用性是非常之广泛的。
我们在绘制图形的时候要注意线条的宽度,字体的美观、尺寸也相当准确,在命令提示行里输入多少就是多少,方便简洁。
对于平时作业和绘图时遇到的问题,主要是对于软件很多绘图修改命令的不熟练。
就拿绘制直线为例,如果不打开正交的命令则会导致直线的不平整,对于绘制水平竖直的图形有很大的不便,使之不能很好的对齐,又如不打开线宽的命令就不会体现线条的粗细等等。
还有图层的建立和应用的问题,需要将要绘制的图层设置为当前,很多时候就是因为忘记设置当前,造成了很多不必要的麻烦。
而且图层绘制时也要好好的选择线性和颜色才不会造成后来返工的局面。
用CAD画图,打开对象捕捉就能把有特征的点标出来,但是很多时候要适时地使
用。
CAD中尺寸标注也很快捷,两个点一拉,左键一点就完成一个标注,不用画箭头,不用标文字,只要自己设计好标注格式,计算机就能按要求标出来。
插入文字也很方便,但是要注意字的格式要提前设好,防止不必要的麻烦。
对于已经绘制的好的图像修改图层,我和很多人一样遇到了类似的问题,在图层选择时没有选定为当前,使得想要的图形没有到规定的图层中去。
这时,要将所要更改的图形进行选定,点击右键,在最
后一个特性中将所要更改的更改过来,无论是颜色还是线性还是图层都可以同一的修改。
这时就比较方便,可以很多线条的修改不存在干扰的问题。
虽然最后的图纸并没有达到预期的效果,但是我切实收获了很多。
在这两个月中进行了很多的探索,付出了很多的时间和精力。
虽然我的作品并不是最好的,但是里面注入了我太多太多的心血,我们对自己很满意。
很感谢老师对我们的指导,让我也对设计这个领域的职业产生了兴趣,很希望可以从事这方面的工作。
第三篇:软件实训心得体会
软件实训心得体会
第一篇:
这次实训使我们明白我们所欠缺的不仅仅是技术知识,更重要的是有一种处理事情的方法、面对问题的心态和动手能力。
面对完全陌生的新知识、新技术、新项目以及整个IT行业,我们不能畏惧,要以一种积极的心态去面对,分析并抓住关键所在。
因为我们所即将应对的每一个项目都是既需要实际操作,又需要详细规划的。
作为组长,协调组员、激励其他学员和积极参与项目研发是我每天必做的工作。
我认为每个人都应该在团队中做好自己应尽的职责,再优秀的个人也可能完成一个即庞大又复杂的项目工作,我们必需紧密的联合在一起,以一个团队的角色来面对。
一公司有一项对项目经理的调查显示,项目经理平均每周参加6个会议,其中25%的时间浪费在无用的讨论上。
会议效率低最普遍的3个原因是:会议没有很好的计划、会议没有被适当的领导、无纪律的与会者。
我们软件项目也会遇到相同的问题,项目启动会、评估会、大大小小的评审会、技术会、周例会等等一系列会议会随着项目进展而召开,如何保证高效的会议效果,我的一些会议技巧与大家共享:确实需要开会时才开会;订立会议纪律;非常清楚的明确会议目标;提前准备一个会议议程;提倡各会议参与人的会前准备;鼓励参与,但在会议过程中遵守会议议程;把团队建设融入会议、作会议记录、会后跟踪所有安排任务的执行情况。
程序员需要关心尊重。
曾经有个例子,某公司开发人员王某由于刚开始学习编程,技术水平差一点,常常受到经理的“另眼相看”,每次软件出现了问题都怀疑是他的原因,老开他的低级玩笑,这位员工会有怎样的表现就可想而知了。
经理通过这种手段能够迫使这一位自动辞职吗?非也,这位员工后来工作非常不负责任,把代码写得既长又重复,且在代码中留下大量的隐患,此时,经理却反而不敢过份得罪他了(否则,留下的巨量代码很难维护)。
如果认为某人不适合目前工作,为何不另请高明?既然已经请他作了这件工作,就得尊重他。
不能指望开发人员在非工作场合谈吐得体、办事周到、眼观六路、耳听八方,正所谓“尺有所短,寸有所长”,例如要求技术人员在酒席宴上象公关小姐或公关先生一样举止适度,从来不会有好的效果。
软件人员普遍喜欢自由而宽松的工作环境,最好不要做过多的无谓的规定,例如不准迟到、上班必须换拖鞋,否则罚款等等。
如果确实有人经常上班迟到,工作不认真等,首先应该了解原因,此时多作思想工作是必要的,许多公司的经理们认为“思想工作”是过时的东西了,其实不然,私企职工背负的心理压力其实很重。
他们特别需要有人关心,特别需要心理上的“减负?
软件项目管理,需要我们不但关注项目管理技术等在软件行业中的应用,还应该关注如何与软件新思想和技术的整合,例如XP等思想,使我们得到更高效益的产出。
欲想琢其玉,必先利其器,项目管理和我们软件开发、质量管理等得一系列工具和模版,是我们事半功倍的利器。
他山之石可以攻玉,关注一些管理界的发展,例如目前的中国式管理等,将其经验用于软件项目管理实践并总结,将为我们带来更大实效。
第二篇:
回味这段美好的时光。
或许未来的某一天,我重新翻开这个实验报告,又会想到那段日子,想起组里的每个人,怀念我们的实验。
现在回想起大学的生活,真的是愧疚比高兴多一点,浪费了不少时间啊。
时间过的好快啊,为期一周的实训生活即将结束了,短短的几天我们收获很大,专业知识、实际操作能力都有很大的提高。
刚开始两天天
的高强度的课程安排让我们受益匪浅;接下来的上机实训又让我们可以巩固了课程。
这让我觉得实训生活充实而有意义。
辅导老师的讲解后,我们开始了项目的制作,这次项目实训任务是以小组为单位完成一个软件项目的开发项目。
最后,自己的努力还是有收获的,看着电脑完成的项目开发报告,就觉得非常有成就感。
在本次的实训中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。
当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心由然而生,这就是工作的乐趣。
有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。
除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。
这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。
也是对以前所学知识的一个初审吧!这次实习对于我以后学习、找工作也真是受益菲浅,在短短的一个星期中让我初步从理性回到感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!相信这些宝贵的经验会成为我今后成功的重要的基石。
在此,我非常感谢学院领导和指导老师对这次实训的大力支持。
第三篇:
我们是20xx年3月7号进入宏天实训公司参加软件开发实训的,在此次实训中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。
当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。
有时候不懂的就需要问别人了,虚心请教,从别人的身上真的能学到自己没有的东西,每一次的挫折都会使我更接近成功。
还有学会了在工作中与人的合作与交流,同乐同累,合作互助,这是团体的精神,也是必须学习的东西。
经过之前的在校学习,对程序设计有了一定的认识与理解。
在校期间,一直都是学习理论知识,没有机会去参与项目的开发。
所以说实话,在实训之前,软件项目开发对我来说是比较抽象的,一个完整。