欢迎来到天天文库
浏览记录
ID:39549663
大小:21.21 KB
页数:15页
时间:2019-07-06
《C++聊天室系统源代码-课程设计(1)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++聊天室系统源代码-课程设计C++聊天室系统源代码一、课程设计(论文)题目 基于客户/服务器模型的套接字编程 二、课程设计(论文)工作:自 2009年12月28日起至 2010年 1 月 2 日止。三、课程设计(论文)的内容要求:1、1) 分析winsock编程技术,特别是Winsock使用; 2) 分析聊天程序的功能及其相关网络协议; 3) 给出V程序流程图和设计方案; 4)
2、 选择开发环境,编译源程序; 5) 给出软件测试文档; 2、1) 资料提交形式:课程设计报告一份、电子文档一份; 2) 课程设计报告不少于3000字; 3) 电子文档中必须至少有5份参考资料,压缩后以班为单位交电子版给老师,时间为第18周的周六(即:2010年1月2日) 4) 成绩:出勤占10%、课程设
3、计报告占40%、答辩占20%、参考资料占30%。 5) 课程设计报告模板写附录。 目 录一、需求分析……………………………………………… 5二、系统结构……………………………………………… 6三、网络通信……………………………………………… 6四、程序代码……………………………………………… 12五、运行截图……………………………………………… 19六、测试结果及改进……………………………………… 20七、参考文献……………………………………………… 21一、 需
4、求分析随着网络的普及,人与人之间的交也更多的是在网络上进行,于交流的实时性,即时通讯系统也被越来越多的人所使用。即时通讯系统除了普通的生活上的交流,也在商业交流中越来越受到重视,它可以是个很好的与客户之间即时交流的平台,在时间上它要比电子邮件更加具有实时性,而费用相对电话交流也要经济的多。在这种环境下,聊天软件作为一种即时通讯工具,得到了很好的发展。聊天室作为即时聊天软件的一种,已经在网络上得到广泛的使用。聊天室需要实现的功能: 1、用户选择感兴趣的房间加入。2、输出聊天信息。3、显示聊天信息。4、自动显示聊天室内的所有在线成员。5、能够对所有人聊天。6
5、、能够进行私聊。905C++聊天室系统源代码二、系统结构为了保证聊天信息的实时性和系统的效率,聊天室系统使用C/S结构,由服务器端程序和客户端程序两部分组成。服务器端和客户端通过TCP协议进行通信。其中,客户端用于显示来自服务器端的聊天信息,接收用户的输入信息并发送给服务器端,服务器端用于接受来自客户端的信息,处理之后转发给聊天室中的其他用户。三、网络通信1)WinsockI/O模型在Windows环境中,可以使用Windows提供WinsockAPI来实现客户端与服务器端直接的通信。Winsock提供的Recv和Send函数是堵塞的,在程序调用这些函数
6、时,如果网络IO未结束,线程将被堵塞起来,从而影响程序其它部分的正常工作。在服务器端,如果要实现同时处理来自多个客户端的连接,就必须为每一个连接到服务器端的客户端创建独立的线程来处理网络通信,从而不会互相影响。但如果这样设计,当有大量用户并发连接到服务器时,服务器会创建大量的线程,这时操作系统在调度这些线程的时候会占用大量的CPU资源,导致系统的效率非常低下。可见,并发量高的情况下,使用这种方来是非常不合适的。为了提高网络IO效率,Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSel
7、ect)、重叠I/O(OverlappedI/O)和完成端口(CompletionPort)共五种I/O模型①select模型: select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可用于判断套接字上是否存在数据,或者能否向一个套接字写入数据。这个函数可以有效地防止应用程序在套接字处于阻塞模式中时,send或recv进入阻塞状态;同时也可以防止产生大量的WSAEWOULDBLOCK错误select的优势是能够从单个线程的多个套接字上进行多重连接及I/O。这就避免了伴随阻塞套接字和多重连接的线程剧增。②WSAAsyncSel
8、ect模型: 因为它是以消息为基础的,关键就是WSAAsyncSelect函数
此文档下载收益归作者所有