●●●●请大家关注CSocketFile

mahatma_cn 2002-05-18 02:50:30
请问:
①CSocketFile跟套接字到底是如何协调工作的?
②请详解其工作原理
谢谢
...全文
249 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
TOYOTA 2002-06-05
  • 打赏
  • 举报
回复
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程序的基础。
不知道合不合你意思?
clsw7272 2002-06-04
  • 打赏
  • 举报
回复
nod
vtable9999 2002-06-04
  • 打赏
  • 举报
回复
很容易就自已解决吧
mahatma_cn 2002-05-20
  • 打赏
  • 举报
回复
怎么有分没有人要啊,很容易的啦。
waterdrop31 2002-05-18
  • 打赏
  • 举报
回复
gz

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧