Windows Sockets:从套接字类派生
本文描述通过从套接字类派生您自己的类所能获得的一些功能。
可以从 CAsyncSocket 或 CSocket 派生您自己的套接字类,从而添加您自己的功能。具体说来,这些类提供了大量可以重写的虚拟成员函数,其中包括:OnReceive、OnSend、OnAccept、OnConnect 和 OnClose。可以重写派生套接字类中的函数,利用它们在网络事件发生时提供的通知。框架调用这些通知回调函数来通知您重要的套接字事件,如接收到可以开始读取的数据。有关通知函数的更多信息,请参见 Windows Sockets:套接字通知。有关重写通知函数的说明,请参见示例应用程序 CHATTER 和 CHATSRVR。
另外, CSocket 类提供 OnMessagePending 成员函数(一个高级的可重写函数)。当套接字抽取基于 Windows 的消息时,MFC 调用此函数。可以重写 OnMessagePending 以查找来自 Windows 的特定消息并响应这些消息。
CSocket 类中提供的 OnMessagePending 默认版本在等待阻塞调用完成时,检查 WM_PAINT 消息的消息队列。它调度绘画消息以提高显示质量。除执行一些有用的操作外,这还说明了一种您可以自己重写此函数的方法。作为另一个示例,可以考虑使用 OnMessagePending 执行下面的任务。假设您在等待网络事务完成时显示一个无模式对话框。此对话框包含一个“取消”按钮,用户可用该按钮取消耗时过长的阻塞事务。重写
OnMessagePending
可能抽取与该无模式对话框相关的消息。
在
OnMessagePending
重写中,将 TRUE 或调用的返回值返回给 OnMessagePending 的基类版本。如果此基类版本执行您仍希望执行的工作,则调用此基类版本。
有关更多信息,请参见:
- Windows Sockets:使用带存档的套接字
- Windows Sockets:使用 CAsyncSocket 类
- Windows Sockets:阻塞
- Windows Sockets:字节排序
- Windows Sockets:转换字符串