




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I题目网络聊天室的设计与实现学号姓名专业班级指导教师实践日期目录一、综合训练目的与要求1II二、综合训练任务1(1)服务器端实现的功能1(2)客户端实现的功能1三、总体设计1(1)系统结构设计1(2)通信设计2四、详细设计说明2(1)系统调用的相关函数2(2)通信连接实现说明3(3)额外功能实现说明4五、调试与测试4六、实习日志6七、实习总结7八、附录核心代码清单71一、综合训练目的与要求目的需要提供客户端和服务器,所有用户通过客户端连接服务器进行注册登录后才能进行聊天,进入聊天室有功能选择,用户可以选择群聊功能,或者可以看所有上线用户,或者查看帮助菜单,每次消息发送都带有系统时间要求任何用户通过客户端注册后登录到服务器进行聊天,服务器需要为守护进程。二、综合训练任务(1)服务器端实现的功能能够正确并且成功开启服务器,服务器为守护进程监听相应的客户端端口,等待客户端用户的连接能建立与客户端用户请求的连接接收客户端发来的注册请求消息,能在服务器端进行注册信息保存接受用户的登录请求信息,能在服务器检验验证用户的登录信息,信息正确的用户可以连接到服务器进行操作,并能够在客户端显示当前的用户上线当用户请求群聊时,服务器可以将客户端发过来的信息传给所有在线用户当用户请求查看当前在线用户时,服务器正确反馈给客户端在线用户客户端请求下线时,提示当前用户下线,服务器将要关闭时提示客户端及时关闭(2)客户端实现的功能能够正确启动成功客户端并发出连接请求能够向服务器发送注册请求,输入用户名和密码保存到服务器能够向服务器发送登录请求,服务器具有验证系统,正确的用户名和密码可以连接服务器,登录聊天室。聊天室,中发送信息,并且所有用户都能收到可以向服务器发出请求群聊的请求,向所有在线用户发送消息可以向服务器发送查看当前在线用户的请求,获得当前在线用户的信息发送消息的实时记录,发送消息可以考到当前系统的时间能够断开与服务器的连接,退出聊天室三、总体设计(1)系统结构设计本系统采用客户/服务器模型,在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(CLIENT/SERVERMODEL),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是客户端/服务器模式的2TCP/IP。在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递4。所以多个客户端之间的通信就变为了客户端与服务端的通信。本聊天室系统采用了客户端/服务器形式,即客户端向服务器发送连接请求,服务器收到请求后,提供给客户端相应的服务。服务器主要是处理客户输入信息。首先要存储客户的个人资料,相当于注册。再有,在客户聊天时,也要记录下客户的聊天时间,已备查当前时间。当然,服务器还有自己的动态数据处理。客户状态分为在线客户和非在线客户,我采用结构体存储链接客户信息,以链表来记录连接客户。当客户一连接服务器时,就给客户一个ID,也就是相当于注册信息,同时并发服务器一直在为连接用户创建线程。系统的总体设计是服务器端和客户端,组成如下服务器端套接字创建函数SOCKET,端口绑定函数BIND,初始化端口通用指针类型STRUCTSOCKADDR,套接口监听函数LISTEN,接受连接函数ACCEPT,数据收发函数READ和WRITE,以及套接口关闭函数CLOSE。客户端套接口创建函数SOCKET,套接口连接函数CONNECT,数据收发函数READ和WRITE,以及套接口关闭函数CLOSE。(2)通信设计首先运行服务器,通过SOCKET函数建立一个套接字,利用SOCKADDR保存,然后通过BIND函数绑定一个网络IP和端口,接着调用LISTEN是SOCKET处于被动的监听模式,并且为该SOCKET建立一个输入数据队列将到达的服务保存在此队列中,然后响应客户请求,用函数ACCEPT函数生成一个新的套接口描述符,让服务器接收客户的连接请求,连接成功后使用READ和WRITE函数进行客户端之间的交互。通信结束后调用CLOSE关闭套接字描述符,停止在该SOCKET上的任何数据操作。运行客户端程序,利用SOCKET函数建立SOCKET,同时为SOCKET数据结构分配存储空间,使用CONNECT函数启动与服务器端的连接,连接完成后,使用WRITE和READ与服务器和别的客户端进行通信,通信结束后调用CLOSE关闭套接字描述符,停止在该SOCKET上的任何。四、详细设计说明(1)系统调用的相关函数SOCKET功能SOCKET的创建原型INTSOCKETINTDOMAIN,INTTYPE,INTPROTOCOL参数说明DOMAINAF_INETIPV4协议AF_INETIPV6协议TYPESOCK_STREAM字节数据流套接字SOCK_DGRAM数据报套接字3SOCK_RAW原始套接字函数返回值若成功,返回SOCKET描述符;若失败,则返回1BIND功能将SOCKET与本机上的一个端口绑定,随后就可以在该端口监听服务请求函数原型INTBINDINTSOCKFD,STRUCTSOCKADDRADDR,INTADDRLEN参数说明SOCKFD调用SOCKET函数返回的SOCKET描述符SOCKADDR指向包含有本机IP地址及端口号等信息的SOCKADDR类型的指针ADDRLEN指针结构长度SIZEOFSTRUCTSOCKADDRLISTEN功能使SOCKET处于被动的监听模式,并为该SOCKET建立一个输入队列,将到达的服务请求保存在此队列中,知道程序处理他们函数原型INTLISTENINTSOCKFD,INTBACKLOG参数说明SOCKFDSOCKET描述符BACKLOG最大主机连接数ACCEPT功能让服务器接收客户的连接请求函数原型INTACCEPTINTSOCKFD,VOIDADDR,INTADDRLEN参数说明SOCKFD被监听的SOCKET描述符,存放提出连接请求服务的主机信息ADDR指向局部的数据结构STRUCTSOCKADDR_IN的指针。ADDRLEN指向值为SIZEOFSTRUCTSOCKADDR_IN的整型指针变量CONNECT功能面向连接的客户程序使用CONNECT函数来分配SOCKET并与远端服务器建立一个TCP连接函数原型INTCONNECTINTSOCKFD,STRUCTSOCKADDRSERV_ADDR,INTADDRLEN参数说明SOCKFD调用SOCKET函数返回的描述符SERVADDR包换远端主机IP地址和端口号的指针ADDRLEN远端地址结构的长度READ和WRITE函数原型1SSIZE_TREADINTFD,VOIDBUF,SIZE_TCOUNT功能发送信息函数原型2SSIZE_TWRITEINTFD,VOIDBUF,SIZE_TCOUNT功能读取信息CLOSE4功能停止在该SOCKET上的任何数据操作函数原型INTCLOSESOCKFD;参数说明SOCKFDSOCKET描述符(2)通信连接实现说明监听连接利用SOCKET、BIND、LISTEN函数建立连接,步骤是1建立SOCKETSOCKET(AF_INT,SOCK_STREAM,0)2此步骤涉及到IP地址及其处理过程。参数说明INTDOMAIN参数INADDR_ANY表示IPV4协议BIND将SOCKET与本机上的一个端口绑定,随后就可以在该端口监听服务请求函数实现BZEROSERVER_ADDRSIN_FAMILYAF_INET/将地址类型设定好/SERVER_ADDRSIN_PORTHTONSPORT/将端口给其赋值/INET_PTONAF_INET,IP,/用连接地址自动填充IP/RETBINDSOCKETFD,STRUCTSOCKADDR/SOCKETFD是分配的SOCKET名字,STRUCTSOCKADDR/1用户名以存在BREAK查看当前在线用户在用户信息的结构体中定义用户在线状态标志CLIENT_STATUS,当用户上线时CLIENT_STATUS改为1,下线时CLIENT_STATUS改为0,把相应的数字转换为字符串发送到客户端,客户端记录相应的标志,传到结构体中。IFINIT_CLIENTSTOK_FILE1/判断用户是否已在线RETNORMAL_USER_LOGIN_FAILED_ONLINE/2已经在线五、调试与测试1实验设备及材料图一服务器客户端相应流程6局域网环境下,使用一台LINUX系统PC或者连接了老师LINUX系统的远程服务器作为此次实训聊天室的服务器,启动若干的CLIENT程序作为客户机。2实验步骤1启动服务器。2启动客户端,在客户端输入信息进行相应的操作3观察服务器响应的内容并记录4客户端进行相关操作服务器响应3实验过程和截图1启动服务器2启动客户端3用户在客户端进行注册4用户在客户端进行登录75用户登录之后的功能页面6同时登录两个用户7用户进行群聊功能7显示当前在线用户8用户下线六、实习日志6月19日8主要任务查阅相关资料,明白任务的有关要求,进行需求分析完成情况理解并且掌握了相关知识,明白了如何进行客户端与服务器端的交互存在问题相关库函数的理解和使用还不彻底,程序设计还没有完善收获明白了相关的原理,初步掌握了基与SOCKET原理的网络编程,客户端与服务器各自需要完成的功能6月20日主要任务编写服务器端代码完成情况完成了基本基于SOCKET的服务器框架存在问题对于建立相关服务器的代码如何与客户端进行交互掌握还不彻底,和建立服务器的顺序还不是很熟悉收获明白了建立服务器的关键代码如何进行合理的运行与组织,在进行测试时候通过增加PRINTF语句查看输入输出明白了如何顺利收发信息6月21日主要任务编写客户端代码完成情况编写完成服务器与客户端的交互以及收发相关的信息READ与WRITE函数,在调试完成之后增加相关的功能如时间显示功能存在问题把时间添加到如何收发信息的模式下没有完成,准备增加到系统界面中,额外的功能实现,即登录客户端进行相应的功能实行。收获建立了基本的网络聊天室框架,可以进行简单的多用户聊天,感觉努力没有白费,终于做出来大致需要实现的功能6月22日主要任务完善客户端和服务器的功能,增加有用的功能完成情况增加了用户注册登录系统,在线用户显示功能存在问题在实现在线用户的匹配功能时出现匹配出错的情况,显示在线用户时,会出现多个相同的用户同时在线的情况。收获额外掌握了本次实习不需要学习的东西,也可能是之前C语言函数库使用不熟悉,增加了实习经验6月23日主要任务完成PPT,进行答辩完成情况答辩一切顺利,向老师描述了自己实习的过程存在问题向老师讲述了自己程序还不完善的地方,有待于改进收获提高了自己勇于表达的能力,有问题也可以认真提出来,肯定会有所收获,虽然最终程序可能不是那么完善,但还是很有成就感七、实习总结通过本次课程设计对LINUX网络聊天室的设计,确实积累和总结了不少的经验,锻炼了我的独立工作和实际动手能力,加深了对计算机网络中SOCKET工作原理及其相互联系的认识,提高了对复杂的综合性实践环节具有分析问题、解决问题、概括总结的实际工作能力,对网络编程项目的开发、设计过程有初步认识。经过一周的设计和开发,网络聊天室的设计设计完毕。其功能基本符合用9户需求,能够简单的网络聊天功能。但是由于课程设计时间较短,还有许多不尽如人意的地方,还有待于我们进一步完善其功能。还增加了本来没有的功能,而且成功实现。学LINUX操作系统让我收获颇丰,同时也让我发现了自身的不足。在实验课上学到的,我将发挥到其它中去,也将在今后的学习和工作中不断提高、完善;在此间发现的不足,我将努力改善,通过学习、实践等方式不断提高,克服那些不应成为学习、获得知识的障碍。在今后的学习、工作中有更大的收获,在不断的探索中、在无私的学习、奉献中实现自己的人生价值。八、附录核心代码清单服务器端/初始化系统连接/INTSYSTEM_INITINTRETINTSOCKETFDSTRUCTSOCKADDR_INSERVER_ADDRIFSOCKETFDSOCKETAF_INET,SOCK_STREAM,01PERROR“SOCKETERRORN“EXIT1/INTOPT,OPTLENSIZEOFOPTLEN/IFSETSOCKOPTSOCKETFD,SOL_SOCKET,SO_REUSEADDR,BZEROSERVER_ADDRSIN_FAMILYAF_INETSERVER_ADDRSIN_PORTHTONSPORTINET_PTONAF_INET,IP,RETBINDSOCKETFD,STRUCTSOCKADDRIFRETTYPEPIFUN_FLAGPIFUNSEND,NEWFDBREAK客户端/链接初始化/VOIDINITSSTRUCTSOCKADDR_INSERVERIFSOCKETFDSOCKETAF_INET,SOCK_STREAM,01PERROR“CREATSOCKETERRORN“12EXIT1BZERO/MEMSET/BZEROSERVERSIN_FAMILYAF_INETSERVERSIN_PORTHTONSP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁矿厂基本知识培训内容
- 知识付费培训招商课件
- 知识付费培训主题课件
- 知识产权青年行专题培训课件
- 钻石基础知识培训心得
- 知识产权维权保护培训课件
- 钻井液专业知识课件
- 知识产权现场观摩培训会课件
- 知识产权活动培训课件
- 飞吧 海欧教学课件
- GB/T 3799.1-2005商用汽车发动机大修竣工出厂技术条件第1部分:汽油发动机
- 小学音乐《村晚》优质课件设计
- 东锅300MW锅炉说明书
- 咯血(课件幻灯)
- 部门会签单模板
- 2023版初中化学跨学科实践活动(化学)
- 上海市环卫作业养护预算定额经费
- 宫颈环扎术护理常规
- G12《贷款质量迁徙情况表》填报说明
- 县城市管理领域集中行使行政处罚权工作衔接规范(试行)
- 九年级初三英语七选五专练1(10篇带答案)-
评论
0/150
提交评论