注重 CSocketFile 也可以作为一个没有 CArchive 对象的(有限)文件使用。默认情况下, CSocketFile 构造函数的 bArchiveCompatible 参数为 TRUE 。这指定文件对象用于存档。若要使用没有存档的文件对象,请在 bArchiveCompatible 参数中传递 FALSE 。
在“存档兼容”模式下, CSocketFile 对象可提供更好的性能并能减少“死锁”的危险。当发送套接字和接收套接字都在等待对方或等待公共资源时,就会发生死锁现象。假如 CArchive 对象用处理 CFile 对象的方式处理 CSocketFile ,也可能发生这种情况。处理 CFile 时,存档可假定只要它接收到的字节数比所请求的少,则说明已到达文件尾。而处理 CSocketFile 时,数据是基于消息的,缓冲区可包含多条消息,因此,接收的字节数比请求的字节数少并不能说明已到达文件尾。应用程序在此情况下并不阻塞(而使用 CFile 时可能阻塞),它可继续从缓冲区读取消息直到缓冲区变空。在这种情况下, CArchive 中的 IsBufferEmpty 函数有助于监视存档缓冲区的状态。 有关更多信息,请参见 Windows Sockets:使用带存档的套接字。
Windows Sockets:带存档的套接字的工作方式
下面是个Windows Sockets:带存档的套接字的工作方式教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!