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回车
ucloud6.18推出全球大促活动,针对新老用户(个人/企业)提供云服务器促销产品,其中最低配快杰云服务器月付5元起,中国香港快杰型云服务器月付13元起,最高可购3年,有AMD/Intel系列。当然这都是针对新用户的优惠。注意,UCloud全球有31个数据中心,29条专线,覆盖五大洲,基本上你想要的都能找到。注意:以上ucloud 618优惠都是新用户专享,老用户就随便看看!点击进入:uclou...
EtherNetservers是一家成立于2013年的英国主机商,提供基于OpenVZ和KVM架构的VPS,数据中心包括美国洛杉矶、新泽西和杰克逊维尔,商家支持使用PayPal、支付宝等付款方式,提供 60 天退款保证,这在IDC行业来说很少见,也可见商家对自家产品很有信心。有需要便宜VPS、多IP VPS的朋友可以关注一下。优惠码SUMMER-VPS-15 (终身 15% 的折扣)SUMMER-...
第一、香港服务器机房这里我们可以看到有提供四个大带宽方案,是全向带宽和国际带宽,前者适合除了中国大陆地区的全网地区用户可以用,后者国际带宽适合欧美地区业务。如果我们是需要大陆地区速度CN2优化的,那就需要选择常规的优化带宽方案,参考这里。CPU内存硬盘带宽流量价格选择E3-12308GB240GB SSD50M全向带宽不限999元/月方案选择E3-12308GB240GB SSD100M国际带宽不...