网络聊天室(6)
发布时间:2021-06-06
发布时间:2021-06-06
这是一个利用Visual C++ 6.0和MFC相结合做成的简单的网络聊天室系统。
如果在堆栈上创建了套接字对象,当包含函数超出范围时将调用此对象的析构函数。如果使用 new 运算符在堆上创建了套接字对象,则您必须负责使用 delete 运算符销毁此对象。
(2)析构函数在销毁对象之前调用对象的 Close 成员函数。
有关代码中该顺序的示例(实际上是对于 CSocket 对象),请参见 Windows Sockets:操作顺序。
创建 CAsyncSocket 类的对象后,该对象封装 Windows SOCKET 句柄并提供对此句柄的操作。使用 CAsyncSocket 时,如果您直接使用 API,则必须处理可能面对的所有问题。例如: “阻塞”方案。
发送和接收计算机之间的字节顺序差异。
在 Unicode 和多字节字符集 (MBCS) 字符串之间转换。
2.3 利用CSocket进行连接通信
CAsyncSocket类逐个封装了WinSock API,为程序员提供了有力而灵活的方法。这个类基于程序员了解网络通讯的假设,目的是为了在MFC中使用WinSock,为了给程序员提供更方便的接口以自动处理这些任务,MFC给出 了CSocket类,这个类是由CAsyncSocket类继承下来的,它提供了比CAsyncSocket更高层的WinSock API接口。Csocket类和CsocketFile类可以与Carchive类一起合作来管理发送和接收的数据,这使管理数据收发更加便利。CSocket对象提供阻塞模式,这对于Carchive的同步操作是至关重要的。阻塞函数(如Receive()、Send()、ReceiveFrom()、SendTo() 和Accept())直到操作完成后才返回控制权,因此如果需要低层控制和高效率,就使用
【5】CasyncSock类;如果需要方便,则可使用Csocket类【1】。
使用CSocket对象涉及CArchive和CSocketFile 类对象。以下介绍的针对字节流型套接字的操作步骤中,只有第3步对于客户方和服务方操作是不同的,其他步骤都相同。
(1)构造一个CSocket对象。
(2)使用这个对象的Create()成员函数产生一个socket对象。在客户方程序中,除非需要数据报套接字,Create()函数一般情况下应该使用默认参数。而对于服务方
下一篇:小学五年级数学第一单元测试卷