没有合适的资源?快使用搜索试试~ 我知道了~
首页VC实现socket中简单聊天室程序设计
简单的聊天室程序 本题是一个简单的聊天室程序,采用客户/服务器模式,分为客户端程序和服务器端程序。由于服务器只能支持一个客户,实际上是一个点对点通信的程序。客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示。 本实例程序的技术要点是: 如何从CasyncSocket类派生出自己的WinSock类。 理解WinSock类与应用程序框架的关系。 重点学习流式套接字对象的使用。 处理网络事件的方法。
资源详情
资源评论
资源推荐
1
一、课程设计目的与任务
1.目的
(1)加深对计算机网络的基本概念和原理,以及网络编程接口 Socket 概
念及编程原理的理解;
(2)提高学生网络应用与编程、分析与解决实际问题的能力,为大型网络
编程打下坚实基础;
(3)通过撰写课程设计报告,锻炼学生的逻辑组织和语言表达能力;
(4)培养学生理论运用于实践的综合应用和设计创新能力。
通过本次课程设计,使学生进一步理解、领会 C++语言和网络编程技术,
把所学的知识运用到具体的程序设计当中去,编写一个接近实际的应用程序。
本课程设计是一门综合性实验。
通过本次课程设计,掌握 VC++应用程序设计;加深对 TCP/IP 协议的理解;
掌握 C/S 编程模式;掌握 Socket 机制、传输控制协议;用户数据报协议;掌握
网络抓包的原理;掌握网络编程应用程序分析、设计、编程和调试的整个过程。
2.任务
(1)设计完成与网络应用相关题目的网络应用软件;
(2)调试运行之后,要求边演示边解释设计的思想、过程及采用的方法;
(3)完成课程设计报告。
二、课程设计的基本要求
1.熟练掌握网络的基本概念和原理;
2.熟练掌握网络编程接口 Socket 概念及编程原理;
3.掌握基于 TCP/IP 的 Internet 编程技术;
4.掌握各种软件开发工具的使用过程及方法。
三、设备及工具
硬件:微机 70 台以上,P4 以上处理器,256M 以上内存、Ethernet 网卡,
交换机
软件:Windows2000/xp 操作系统,VC6.0 编程环境。
四、选题--简单的聊天室程序
本题是一个简单的聊天室程序,采用客户/服务器模式,分为客户端程序和
服务器端程序。由于服务器只能支持一个客户,实际上是一个点对点通信的程
序。客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表
框中显示。
本实例程序的技术要点是:
如何从 CasyncSocket 类派生出自己的 WinSock 类。
2
理解 WinSock 类与应用程序框架的关系。
重点学习流式套接字对象的使用。
处理网络事件的方法。
客户端和服务器端聊天程序的实现。
客户机端结构图
服务器端结构图
五、 实验步骤:
3
客户端的实现:
1.使用 MFC AppWizard 创建客户端应用程序框架。
在 New 对话框中,选择 Projects 卡,如图所示。从左边的列表框中选择
MFC AppWizard(exe)条目,在右边的 Project Name 处填入工程名 Talkc,
在 Location 处选定存放此工程的目录。然后点击 OK 按钮。
2.出现 MFC AppWizard 设置的第一步对话框(MFC AppWizard – Step
1),如图所示。从中选择 Dialog based 的应用程序类型,语言支持选择中
文(中国),使此工程能够正确地进行中文的输入、输出、显示及处理。然后
点击 NEXT 按钮。
3.出现 MFC AppWizard 设置的第二步对话框(MFC AppWizards –
Step 2 of 4),如图所示,在 Windows Sockets 复选框上打上选择标记,
表示应用程序将支持 WinSock 套接字。接受其它的默认设置。跳过后面的步
骤,直接点击 Finsh 按钮。
4.出现新工程信息对话框(New Project Information),说明了所创建
的骨架工程的有关信息。
5. 在创建了应用程序骨架之后,可以布置程序的主对话框。在 MFC 界面
左方的工作区(workspace)中选择 resourceView 卡,从中选择 Dialog,
双击 IDD_TALKC_DIALOG,右边会出现对话框,左边会出现控件面板,利用
控件面板可以方便地在程序的主对话框界面中添加相应的可视控件对象
6.然后按照表 5-1 修改控件的属性。
7.为对话框中的控件对象定义相应的成员变量,在窗口菜单中点查看/建立
类向导,进入类向导(Class Wizard)对话框。
8. 选择成员变量卡(Member Variables),用类向导为对话框中的控件
对象定义相应的成员变量。确认 Class Name 是 CTalkcDlg,在左边的列表框
中选择一个控件,然后点“Add Variable”按钮,会弹出”Add Member
Variable”对话框。
9.创建从 CAsyncSocket 类继承的派生类
为了能够捕获并响应 socket 事件,应创建用户自己的套接字类,它应当从
CAsyncSocket 类派生,还能将套接字事件传递给对话框,以便执行用户自己
的事件处理函数。选择菜单“插入/新建类”,进入“New Class”对话框。
10. 利用类向导 ClassWizard 为这个套接字类添加响应消息的事件处理成
员函数, 点菜单 View/ClassWizard...,进入类向导对话框,选择 Message
Maps(消息映射)卡,确认 Class name 是 CMySocket,从 Messages
(消息)栏中选择事件消息,然后点击 Add Function 按钮,就会看到在
Member Function 栏中添加了相应的事件处理函数。此程序中需要添加
OnConnect,OnClose 和 OnReceive 三个函数。
11. 为套接字类添加一般的成员函数和成员变量在 VC++的界面中,在工
作区窗口选择 ClassView 卡,用右键单击 CMySocket 类,会弹出快捷菜单,
选择其中的 Add Member Function 可以为该类添加成员函数;选择 Add
Member Variable 可以为该类添加成员变量。
12. 对这个套接字类,添加一个私有的成员变量,是一个对话框类的指针
private:CTalkcDlg * m_pDlg; 再添加一个成员函数:void
SetParent(CTalkcDlg * pDlg);
4
13. 为对话框类添加控件对象事件的响应函数,按照表 5.3,用类向导
(Class Wizard )为对话框中的控件对象添加事件响应函数。主要是对于三个按
钮的单击事件的处理函数。
14. 为 CTalkcDlg 对话框类添加其它的成员函数和成员变量,成员变量:
CMySocket m_sConnectSocket; //用来与服务器端连接的套接字。成员函
数:void OnClose(); // 用来处理与服务器端的通信。void OnConnect();
void OnReceive();
15. 然后编写时间函数 OnButtonClose(),onClose().等函数和加文件头,
类说明等。
服务器端的实现:
服务器端的实现和客户端类似,就是在有些步骤有差别,比如在创建控件
的时候服务器端没有连接,取而代之的是监听键。之后建立类向导也不同,
btn_connect 改为 btn_listen。而且服务器端的套接字比客户端多了一个
Listen 相应函数也是从 onconnect()到 onaccept()。代码有些不同,大体步
骤和客户端如出一辙。
5
六、 设计过程
实现代码如下:
talks 的代码:
MySocket.h:
class CTalksDlg;
#if !
defined(AFX_MYSOCKET_H__D3ED8999_6737_401E_A548_95C52E54F5C3__I
NCLUDED_)
#define
AFX_MYSOCKET_H__D3ED8999_6737_401E_A548_95C52E54F5C3__INCLUD
ED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// MySocket.h : header file
/////////////////////////////////////////////////////////////////////////////
// CMySocket command target
class CMySocket : public CAsyncSocket
{
// Attributes
public:
// Operations
public:
CMySocket();
virtual ~CMySocket();
// Overrides
public:
void SetParent(CTalksDlg* pDlg);
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMySocket)
public:
剩余32页未读,继续阅读
WINSIST
- 粉丝: 3
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0