怎么有分没有人要啊,很容易的啦。

解决方案 »

  1.   

    MFC提供了两种用Windows Sockets编写网络通信程序的模型,体现在两种MFC类中:
      ·CAsynCSocket(异步套接字)
      该类封装了Windows Sockets API。CAsynCSocket适合于精通网络编程的编程人员。它既可以直接利用套接字API,又可以利用回调函数通知网络事件的发生。这个类并不是将套接字包装成用于C++的面向对象的形式,它所提供的唯一的附加抽象是将某些与套接字相关的Windows消息转换成回调函数。
      ·CSocket(套接字)
      这个类是从CAsynCSocket类中派生出来的,它通过MFC CArchive(文档)类对象为套接字提供了一个更高的抽象。CSocket从CAsynCSocket中继承了许多成员函数。CSocket类的最重要的一点是,它提供了“阻塞(blocking)”,“阻塞”对于文档类的同步操作是很必要的。通常在使用CAsynCSocket时,应避免使用阻塞操作,而应尽量使用异步操作,异步操作为非阻塞操作。缺省情况下,CAsynCSocket支持异步操作,程序员必须使用回调函数来处理阻塞。相反,CSocket类是同步的,它可以自动处理阻塞。
      带有一个CArchive对象的CSocket的编程模型是最简单的编程模型。CArchive对象可以看作是一种二进制数据流。像输入/输出流一样,一个CArchive对象与一个CFile(文件)类对象相联系,并且允许从缓冲区中读数据和往缓冲区中写数据。
      在创建一个CArchive对象之前,必须先创建一个CFile对象。此外,还必须保证该文档的载入(load)/存储(store)状态与文件的打开方式相兼容。每一个文件只对应于一个文档。当构造一个CArchive对象时,程序员需要把它与代表一个打开文件的类CFile( 或其派生类CSocketFile)的一个对象相连接,还要指明该文档将被用作提取(load)数据还是发送(store)数据。
      CSocketFile(套接字文件)类是CFile的一个派生类。如前文所述,通常将一个CSocketFile对象与一个CArchive对象相连,以简化发送和接收数据。在发送数据时,将数据插入文档中,也就是调用CSocketFile成员函数将数据写入CSocket对象中。接收数据时,将数据从文档中抽取出来,就是使CArchive对象调用CSocketFile成员函数从CSocket对象中读取数据。
      使用CArchive和CSocketFile后,程序员就可以不必考虑套接字的细节,只需简单地创建CSocket、CSockFile和CArchive对象,然后开始通过将数据存入(store)CArchive、从CArchive中提取(load)数据以及发送和接收数据,CArchive、CSocketFile和CSocket将处理其内部的细节。
      实际编程中,首先,服务器提供服务,申请一个套接字并处于监听状态,一旦接收到客户机的套接字连接请求,便会立即分配一新套接字建立连接,启动一子线程处理连接信息,原套接字继续用于监听。作为客户机方,先创立一个套接字,然后利用该套接字申请连接,由服务器提供连接服务。服务器建立连接列表,记录所连接的套接字,即各客户机的访问地址,这就是一个Internet上常见的Chat程序的基础。
    不知道合不合你意思?