预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
山东建筑大学信电学院课程设计说明书课程设计说明书目录摘要…………………………………………………………………………………一、聊天程序的分析与设计………………………………………………………1二、该程序的关键技术与算法……………………………………………………2三、程序的实现……………………………………………………………………33.1项目创建……………………………………………………………………33.2界面设计……………………………………………………………………33.3代码编写……………………………………………………………………5四、程序的演示结果………………………………………………………………29五、总结与致谢……………………………………………………………………30六、参考文献………………………………………………………………………31摘要在这个信息爆炸的时代,人们的交往越来越依赖于一些即时的聊天程序,比如QQ、MSN等,虽然这些程序形态各异,但本质都是一样的。他们都是由服务器聊天程序和客户端聊天程序组成。服务器端聊天程序接受客户端的信息,并根据客户端的要求把这些信息发送到另外一个客户或多个客户中。客户端则负责建立和维护与服务器端得连接,向服务器发送本客户端的内容,同时从服务器接收对方的响应。客户端可以手动输入IP地址和端口号进行连接。服务端可以手动建立服务器接受其他客户端得连接要求。客户端可以发送消息给服务端,显示服务端传来信息。服务端可以接受客户端发送的信息,并将信息传给所有在线的客户端。聊天程序的分析与设计系统架构方式如下图:客户端信息交互服务器网卡通信底层TCP/IPCServerSocket通信底层TCP/IPCClientSocket网卡网线服务端需要完成的3件事情在特定的端口上等待来自客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。客户端需要完成的3件事情建立和维护与服务器的连接,并且随时检测连接的状态。把用户输入的信息及时发送到服务端,同时,随时准备好接受服务端的信息,并把它显示出来。在用户推出聊天过程时要关闭与服务器的连接。该程序的关键技术与算法MFC为套接字提供的类有CAsynSocket和CSocket,CAsynSocket提供基于异步通信的套接字封装功能,CSocket继承于CAsyncSocket。是WindowsSocketAPI的高层抽样。它通常要和CSocketFile及CArchive这两个类混合使用。后两个类主要负责的是数据的发送和接收。CSocket提供的通信为同步通信,数据未接收到或是未发送完之前调用不会返回。本章的聊天程序就是通过派生CSocket来完成服务端和客户端功能。程序的实现3.1项目创建本例将使用VisualC++6.0创建一个基于对话框的MFCAppWizard(exe)项目取名为“Chat”。在MFC向导的第一步界面中选择“Dialogbased”单选按钮,在MFCAppWizard向导的第二步界面中选择“WindowsSockets”复选框,其它均采用默认设置。3.2界面设计打开IDD_CHAT_DIALOG对话框,该对话框将是程序运行时的主界面,以下是为对话框添加的控件。如下所示:IDD_CHAT_DIALOG对话框中的主要控件ID属性设置分组框IDC_STATIC标题“”静态文本IDC_STATIC标题“IP地址”IP地址控件IDC_SERVERIP默认静态文本IDC_STATIC标题“端口”编辑框IDC_PORT默认分组框IDC_STATIC标题“聊天记录”编辑框IDC_SHOWTEXT样式:多行,只读静态文本IDC_STATIC标题“昵称”编辑框IDC_NAME默认命令按钮IDC_CONNECT标题“连接服务器”命令按钮IDC_SETSERVER标题“建立服务器”静态文本框IDC_STATIC标题“消息”编辑框IDC_INPUTTEXT默认命令按钮IDC_SEND标题"发送”完成控件添加后的对话框如下图所示:添加完上述控件后,打开Classwizard,为IDD_CHAT_DIALOG指向的CChatRoomDig类按照如下表添加成员变量。成员变量的添加控件ID变量名数据类型IDC_PORTm_uportUNITIDC_SHO