用VC++简单的多线程聊天室程序完整课程设计分析知识分享.doc
《用VC++简单的多线程聊天室程序完整课程设计分析知识分享.doc》由会员分享,可在线阅读,更多相关《用VC++简单的多线程聊天室程序完整课程设计分析知识分享.doc(26页珍藏版)》请在咨信网上搜索。
1、课 程 设 计 书学院 计算机学院 专业 计算机科学与技术 班级 题目 局域网聊天室程序 教师 学生 课程设计任务书 课程名称VC+课程设计时间题 目局域网聊天室程序主要内容:该系统要求完成聊天室的全过程,包括客户端和服务器两大部分的编程及其连接。服务器端聊天程序负责接收和发送来自客户端的聊天信息,客户端聊天程序负责建立和维护与服务器端的连接,想服务器发送本客户的聊天内容。系统采用VISUAL C+语言程序设计编程实现。要求:(1)通过实际软件项目的分析、设计、编码、测试等工作,掌握用软件工程的方法来开发和维护软件。(2)按要求编写课程设计报告书,能正确编写分析、设计、编码、测试等技术文档和用
2、户使用手册。 (3)进行系统的联合调试,编写系统使用说明。(4)完成系统的文档、设计说明工作任务分配:计科098班:XX主要负责程序框架设计和服务端代码编写计科098班:XX主要负责客服端代码编写计科096班:XX主要负责软件测试及调试目录 摘 要21 引 言31.1课题背景及意义31.2 实验平台介绍31.3 可行性分析32需求分析52.1 设计目的52.2 设计要求52.3 功能要求52.4 系统主要功能和主要功能描述53设计流程图74 调试分析过程描述95核心代码165.1服务端165.2客服端216 设计的总结和体会247 参考文献24局域网聊天室程序摘 要计算机网络技术发展至今已经大
3、大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,但当我们学习了windows程序设计这门课程之后,我们决定设计一个简单的聊天系统来巩固我们的学习。接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用Visual C+,数据库采用Access,
4、程序运行平台为Windows 98/2000/XP。关键词 聊天软件;局域网;MFC; Visual C+;多线程1 引 言1.1课题背景及意义当今世界正处于信息时代,计算机和通信网络是这一时代所谓“信息基础设施”。在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。基于SOCKET的局域网通信是一种灵活的、易于实现的、低成本的方法。它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。而在SOCKET API的帮助下,开发基于SOCKET的局域
5、网通信软件也是易于实现的。1.2 实验平台介绍Visual C+(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C+可视化开发环境。VC基于C,C+语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在Windows平台无所不能。VC主要是针对Windows系统,适合一些系统级 的开发,可以方便实现一些底层的调用。在VC里边嵌入汇编语言很简单。当对系统性能要求很高的时候,可用VC开发。VC在多线程、网络通信、分布应用方面,有着不可比拟的优势。1.3 可行性分析本课程设计主要解决在客
6、户端于客户端的信息交换和客户端于服务器的信息交换及服务器的信息处理上的管理的课程设计。此程序主要分为两部分:服务器端和客户端。服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请求,然后登陆聊天室。在服务器端的成员列表栏中会显示在线的所有人名单,有人退出聊天室,成员列表会自动除名。服务器端同时也提供了成员之间的私聊功能,此时服务器端作为一个转发站,进行消息的转发。整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。 先启动服务器端聊天程序,这是聊天服务器需要指定一个端口号,客户端则根据这个端口号以及
7、服务器的网络地址与服务器进行通信。在这里,把端口号成为“聊天频道” 。在后面的程序代码分析中将看到,端口号并不等同于聊天频道,而是在聊天频道上增加一个固定的偏移值,使得这个聊天频道不会和系统保留的端口发生冲突。 服务器启动后将在这个指定的端口号中等待客户的连接。对于公共聊天室,服务器对客户的数目不做任何限制。而对于私人聊天室,每个聊天频道则只能允许两个客户互相连接,使得一方发送的信息只能到达对方的主机中。这里的服务器提供的是公共聊天服务。 通过分析发现,该程序完全可以通过Visual C+中MFC完成。2需求分析2.1 设计目的综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以
8、Visual C+作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。2.2 设计要求 采用客户/服务器模式,分为客户端程序和服务器端程序。服务器采用WINSOCK I/O模型中的任一种,支持多个客户同时在线聊天。客户端程序和服务器程序通过网络交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之间的私聊(可以通过服务器中转,或考虑UDP打洞直接建立端端连接)。课程设计要求设计并编程完成两个方面的内容:首先建立一个使用TCP协议的聊天室服务器,这个服务器可以同时支持多个用户的在线聊天;其次设计一个可以和服务器通信的聊天室客户端。2.3 功能要求 支持
9、多个客户端的连接,在服务器和多个客户端之间进行数据传输; 接收客户端发送的消息,并显示在一个列表框中; 在用户连接上后有提示,显示出连接的用户名字; 发送信息时可以显示聊天的所有记录;2.4 系统主要功能和主要功能描述服务器端聊天程序必须能够做3件事情:(1) 服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。(2) 服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。(3) 服务器还要监控这些连接的状态,在客户主动离开或发生故
10、障时从列表中删除相应的表项,并及时更新连接表。客户端聊天程序需要完成以下几个功能:(1) 客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接,并且随时检测连接的状态。(2) 客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去,才能及时地满足用户的交互需求。(3) 要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应。(4) 在用户退出聊天过程是要关闭与服务器的连接。比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,使得服务器能够及时掌握
11、客户端的连接状态,把对方客户的退出信息及时发送到对等实体上。3设计流程图根据对用户的要求及功能设置可以得到以下的流程图3.1,用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天。客户端的聊天分为对所有人的信息和私聊的信息,该信息应通过程序控制分别进行处理。图3.1 设计流程图4 调试分析过程描述n 在聊天客服端启动的时候对端口进行监听,会出现图4.1的界面。图4.1登陆服务器界面n 在客户端启动的时候,会出现图4.2的界面,该界面为客户端的连接界面。图4.2 登陆客户端界面(客服
12、端1)图4.2 登陆客户端界面(客服端2)n 图4.3为用户张三和李四连接服务器时的界面图4.3 张三登陆服务器图4.3李四登陆服务器n 图4.4为用户李四发送消息的服务器界面图4.4 李四发送消息服务端界面n 图4.5为用户张三发送消息的服务器界面图4.4 张三发送消息服务端界面n 图4.6为用户李四发送消息的客服端界面图4.6李四发送消息的客服端界面n 图4.7为用户张三发送消息的客服端界面图4.7张三发送消息的客服端界面5核心代码5.1服务端(1).启动监听UpdateData(TRUE);/更新数据到类成员GetDlgItem(IDC_BTNSTART)-EnableWindow(FA
13、LSE);GetDlgItem(IDC_BTNSEND)-EnableWindow(TRUE);g_ServerSocket=socket(AF_INET,SOCK_STREAM,0); /创建套接字if( INVALID_SOCKET = g_ServerSocket)MessageBox(创建套接字失败!);return ;SOCKADDR_IN svraddrsock;svraddrsock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);svraddrsock.sin_family=AF_INET;svraddrsock.sin_port=htons(m_
14、port);if ( SOCKET_ERROR = bind(g_ServerSocket,(SOCKADDR*)&svraddrsock,sizeof(SOCKADDR)MessageBox(套接字绑定失败!);return ;listen(g_ServerSocket,10);/监听套接字/创建接收线程m_hAcceptthread=CreateThread(NULL,0,AcceptThread,NULL,0,NULL);if (m_hAcceptthread =NULL)MessageBox(创建接收连接线程失败!);return ;g_hmutex=CreateMutex(NULL,
15、FALSE,NULL); /创建互斥量(2).监听请求连接线程/接收连接DWORD WINAPI AcceptThread( LPVOID lpParameter)SOCKADDR_IN serveraddr;int addrlen=sizeof(SOCKADDR);SOCKET RecvSocket;/recv后返回的套接字RecvSocket=accept(g_ServerSocket,(SOCKADDR *)&serveraddr,&addrlen);g_ClientSocket = RecvSocket;if ( INVALID_SOCKET=RecvSocket)AfxMessage
16、Box(接受连接失败!);return FALSE;BOOL ContinueFlag=TRUE;while (ContinueFlag&TRUE)g_Mutex.Lock();BYTE recvBuffRECV_DATA_SIZE + 2=0;int recvlength=sizeof(recvBuff);int recvedSize = 0;recvedSize = recv(RecvSocket,(char*)recvBuff,recvlength,0);if(SOCKET_ERROR = recvedSize)int x=WSAGetLastError();CString str;/W
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 简单 多线程 聊天室 程序 完整 课程设计 分析 知识 分享
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。