C卄网络应用程序开发
课程设计
题 目 QQ模拟聊天系统
学 院 软件学院
班 级 10级网冈络工程3班
指导 教师 钱 鸽
姓 名 谢昊天
学 号 1215134046
学年、 学期 2012~2013学年第一学期
1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .引
言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1. 1需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1.2聊天室程序的开发背景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1.3 聊天室的设计目标. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .总体
设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2.1 功能要求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2.2 系统主要功能和主要功能描述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .详细
设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
3.1设计流程图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
3.2客户端的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
3.3服务端的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .运行
结果. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
4.1客户端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
4.2 服务器端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
4.3 客户端登陆到服务器端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
4.4 进行对话. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
4.5 退出服务器端与客户端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .心得
体会. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .参考
文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
1.引言
计算机网络技术发展至今已经大大超越了人们当初的预想 无论是人们日常的工
作还是学习我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞
生而且为我们的即时通讯带来了众多的方便比如说大家所熟知的腾讯QQ、微软的
MSN、移动的Fetion等都是做的比较成功的实时聊天工具。随着网络的日益普及
各种聊天工具也层出不穷但当我们学习了《T CP/IP协议与网络编程》这门课程之后
我们便会觉得其实要实现简单的网络通讯其实并不难。接下来的课程设计就是针对
一个简单的网络聊天程序利用MF C为开发工具实现基本的通讯功能。
1.1 需求分析 当前是数字信息时代 网络时代任何一种编辑工具都不能忽视在网络上的应用 并且随着Internet的普及和宽带技术的成熟 越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务享受网络带来的便利和办公的高效与此同时一个新型的 Web应用程序为网民之间提供了一个实时通信的功能和场所这就是聊天室。
在网络早期就开始盛行不论是B B S IRC都有类似网上聊天室的机制。 聊天室为网友提供了实时性对话的渠道是网络上极为流行的一项服务。 聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境 网友之间相互以文字交谈在形式上有点类似笔友的性质却大大节省了书信往返的时间这也是网上交友之所以如此热门的原因。
1.2 聊天室程序的开发背景近年来互连网发展日新月异 网络使空间的距离不再成为人们沟通的障碍世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯。因此本次毕业设计以“面向连接的Win so ck网络会话程序开发”为题制作一个C/S聊天室程序通过制作该程序还能更好的学习网络socket编程的相关知识。
1.3 聊天室的设计目标
本课题是建立聊天通信模型,设计一个聊天室软件包括服务器端和客户端主要功能为 服务器端功能
1、 初始化so cket,创建服务器端。
2、 维护一个链表保存所有用户的IP地址、端口信息。
3、 接受用户传送来的聊天信息然后向链表中的所用用户转发。
4、 接受用户传送来的连接判断命令并向用户发出响应命令。 客户端功能
客户端界面上的两个文本框一个用于显示接受的聊天信息一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。
通过本课题的实训设计可以比较深入的了解和掌握WINSOC控件基本属性、方法和事件理解网络聊天通信的概念输控制协议TCP进行数据交流初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容进行项目的设计开发训练更好的适应社会的需求。
2.总体设计
2.1 功能要求
1、 支持多个客户端的连接在服务器和多个客户端之间进行数据传输
2、 接收客户端发送的消息并显示在一个列表框中
3、 在用户连接上后有提示显示出连接的用户名字
4、 发送信息时可以显示聊天的所有记录
2.2系统主要功能和主要功能描述 服务器端聊天程序必须能够做3件事情
1、 服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求并且需要维护一个客户连接表 以记录所有成功的连接。
2、 服务器聊天程序要及时接受从各个聊天客户发送过来的信息然后把这些信息转发到一个或多个客户连接。对于公共聊天室服务器将把接受到的信息向除源端外的所有客户发送过去。
3、 服务器还要监控这些连接的状态在客户主动离开或发生故障时从列表中删除相应的表项并及时更新连接表。
这些要求可以通过CSocket类提供的功能实现。从CSocket派生出两个类CListenS o cket和CClientSo cket,它们分别用来侦听客户的连接请求和建立与客户的连接。服务器只需要一个侦听套接字CListen So cket 然后根据客户的连接请求动态创建客户套接字CClientSocket 。客户套接字的数量是不可预知的 因此需要一个列表来记录。
MF C的CPtrList类就能实现这种功能。客户端聊天程序需要完成以下几个功能
1、 客户端聊天程序要负责建立和维护与服务器的连接通过获取用户的设置尝试与
服务器的连接并且随时检测连接的状态。
2、 客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下 当用
户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去才能及
时地满足用户的交互需求。
3、 要随时准备好接受来自服务器的信息随时把接受到的信息显示出来 让用户及
时看到对方的响应。
4、 在用户退出聊天过程是要关闭与服务器的连接。 比较好的做法是提前通知服务器
或者直接给服务器发送一条退出通知使得服务器能够及时掌握客户端的连接状
态把对方客户的退出信息及时发送到对等实体上。
客户端聊天程序需要使用一个通过CSocket类派生出来的CChatSocket类
来实现。该套接字用来发送一个与服务器的连接请求和维持与服务器的连接 发送和接收聊天信息完成上述各项功能。
3.详细设计
3.1设计流程图
3.2客户端的实现
(1)首先启动Visual C++6.0利用MFC AppWizard[EXE建立一个新的MFC工程工程名为 QQ模拟聊天系统在MFCAppWizard Step 1的时候选择Dialog based即基于对话框在Step4时勾选Windows Sockets选项(如图)其他默认值下一步。
(2)客户端主要分为三个窗口第一个是连接窗口需要输入连接到服务器的相关设置信息第二个是聊天信息显示窗口该窗口显示登录服务器以来发送和接收到的消息第三个是消息编辑发送窗口需要输入你要发送的信息内容并发送。
新建一个对话框并添加各种控件如下图:
S3
服务器 端口号: 编辑
编辑
编辑
33 QQ模拟呱天球"容户握…制作谢昊天学号:1215134046
漏辑
SS回车
licloud官方消息:当前对香港机房的接近100台物理机(香港服务器)进行打折处理,30Mbps带宽,低至不到40美元/月,速度快,性价比高,跑绝大多数项目都是绰绰有余了。该款香港服务器自带启动、关闭、一键重装功能,正常工作日内30~60分钟交货(不包括非工作日)。 官方网站:https://licloud.io 特价香港物理服务器 CPU:e3-1230v2(4核心、8线程、3.3GH...
spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,spinservers这次提供的大硬盘、大内存服务器很多人很喜欢。TheServerStore自1994年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有40,000 平方英尺的仓库,库存中始终有数千台...
华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供数据中心基础服务、互联网业务解决方案, 以及香港服务器租用、香港服务器托管、香港云服务器、美国云服务器,云计算、云安全技术研发等产品和服务。其中云服务器基于成熟的 ...