聊天室程序的设计及实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五聊天室程序的设计及实现

一、实验目的

在实验四的基础上,进一步增加聊天系统的功能,进一步理解MFC的Socket类同Socket API之间的区别以及MFC的两种类之间的联系与区别。掌握聊天系统的设计模式与实现以及CAsynSocket,进一步加强对多线程的理解。

二、实验内容

1.设计实现一个基于客户机/服务器模式的聊天系统;

2.服务器能支持多个客户端;

3.客户端可以选择私聊和屏蔽掉其他用户的信息。

三、实验环境

Windows操作系统、VC++6.0

四、实验指导

1.实验方法步骤

(1)启动Visual C++6.0,创建一个控制台项目工程chat。在此项目工程中添加Client 和Server两个项目。

(2)设计服务器端界面并添加相应代码。要求支持多线程。

(3)设计客户端并添加相应代码。

(4)分别打开服务器和客户端进行验证。

2.CAsyncSocket

(1)套接字的初始化与创建

①初始化

CAsyncSocket()

构造了一个空的套接字,构造后必须调用Create函数,才能真正创建一个Socket句柄

②创建

BOOL Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,long lEvent=FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE|,LPCTSTR lpszSocketAddress=NULL);

(2)套接字的连接操作

①套接字的绑定

BOOL Bind(UINT nSocketPort,LPCTSTR lpszSocketAddress=NULL);

BOOL Bind(const SOCKADDR* lpSockAddr,,int nSockAddrLen);

②对连接的侦听

BOOL Listen(int nConnectionBacklog=5);

③建立连接:

BOOL Connect(LPCTSTR lpszHostAddress,UINT nHostPort);

BOOL Connect(const SOCKADDR* lpSockAddr,int nSockAddrLen);

④接收客户端的连接请求

Virtual BOOL Accept(CAsyncSocket& rConnectedSocket,SOCKADDR* lpSockAddr=NULL,int* lpSockAddrLen=NULL);

(3)发送与接收数据

①面向连接的数据发送与接收

virtual int Send(const void* lpBuf,int nBufLen,int nFlags=0);

virtual int Receive(void * lpBuf,nBuffLen,int nFlags=0);

②无连接的数据发送与接收

发送:

int SendTo(const void* lpBuf,int nBuffLen,UINT nHostPort,LPSTR lpszHostAddress=NULL,int nFlags=0);

int SendTo(const void* lpBuf,int nBuffLen,const SOCKADDR* lpSockAddr,int nSockAddrLen,int nFlags=0);

接收:

int ReceiveFrom(const void* lpBuf,int nBuffLen,UINT CString&rSocketAddress,UINT& rSocketAddress,int nFlags=0);

int SendTo(const void* lpBuf,int nBuffLen,const SOCKADDR* lpSockAddr,int nSockAddrLen,int nFlags=0);

(4)套接字的关闭

①禁止数据的发送与接收

BOOL ShunDown(int nHow=sends);

②关闭套接字

Virtual void Close();

(5)CAsyncSocket的基本事件和重载函数

五、实验报告

1.实验名称

2.实验目的

3.实验内容

4.测试数据和预期结果(必要时应准备多组数据)

5.算法分析和流程图

6.源程序(应加适当的注释,可读性好)

7.小结(出错及解决方法,上机调试的结果和体会)

相关文档
最新文档