- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
摘要…………………………………………………………………………………
一、聊天程序的分析与设计………………………………………………………1
二、该程序的关键技术与算法……………………………………………………2
三、程序的实现……………………………………………………………………3
3.1 项目创建……………………………………………………………………3
3.2 界面设计……………………………………………………………………3
3.3 代码编写……………………………………………………………………5
四、程序的演示结果………………………………………………………………29
五、总结与致谢……………………………………………………………………30
六、参考文献………………………………………………………………………31
摘要
在这个信息爆炸的时代,人们的交往越来越依赖于一些即时的聊天程序,比如QQ、MSN等,虽然这些程序形态各异,但本质都是一样的。他们都是由服务器聊天程序和客户端聊天程序组成。服务器端聊天程序接受客户端的信息,并根据客户端的要求把这些信息发送到另外一个客户或多个客户中。客户端则负责建立和维护与服务器端得连接,向服务器发送本客户端的内容,同时从服务器接收对方的响应。客户端可以手动输入IP地址和端口号进行连接。服务端可以手动建立服务器接受其他客户端得连接要求。客户端可以发送消息给服务端,显示服务端传来信息。服务端可以接受客户端发送的信息,并将信息传给所有在线的客户端。
聊天程序的分析与设计
系统架构方式如下图:
信息交互
服务端需要完成的3件事情
在特定的端口上等待来自客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。
及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。
监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。
客户端需要完成的3件事情
建立和维护与服务器的连接,并且随时检测连接的状态。
把用户输入的信息及时发送到服务端,同时,随时准备好接受服务端的信息,并把它显示出来。
在用户推出聊天过程时要关闭与服务器的连接。
该程序的关键技术与算法
MFC为套接字提供的类有CAsynSocket和CSocket,CAsynSocket提供基于异步通信的套接字封装功能,CSocket继承于CAsyncSocket。是Windows Socket API的高层抽样。它通常要和CSocketFile及CArchive这两个类混合使用。后两个类主要负责的是数据的发送和接收。CSocket提供的通信为同步通信,数据未接收到或是未发送完之前调用不会返回。本章的聊天程序就是通过派生CSocket来完成服务端和客户端功能。
程序的实现
3.1 项目创建
本例将使用Visual C++6.0创建一个基于对话框的MFC AppWizard(exe)项目
取名为“Chat”。在MFC向导的第一步界面中选择“Dialog based”单选按钮,在MFC AppWizard向导的第二步界面中选择“Windows Sockets”复选框,其它均采用默认设置。
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指向的CChatRoom
文档评论(0)