本文介绍套接字类中的通知函数。 这些成员函数是框架调用的回调函数,用于通知套接字对象的重要事件。 通知函数包括:
OnConnect:通知此连接套接字其连接尝试已完成:可能是成功或出错。
OnClose:通知此套接字它连接到的套接字已关闭。
注释
另一个通知函数是 OnOutOfBandData。 此通知告知接收套接字发送套接字有要发送的“带外”数据。 带外数据是与每个连接的流套接字对关联的逻辑独立通道。 带外通道通常用于发送“紧急”数据。 MFC 支持带外数据。 使用 类 CAsyncSocket 的高级用户可能需要使用带外通道,但不建议使用 CSocket 类的用户。 最简单的方法是创建另一个用于传递此类数据的套接字。 有关带外数据的详细信息,请参阅 Windows SDK 中提供的 Windows 套接字规范。
如果派生自类 CAsyncSocket
,则必须覆盖应用程序感兴趣的网络事件的通知函数。 如果从类 CSocket
派生类,则选择是否替代感兴趣的通知函数。 还可以使用 CSocket
自身,在这种情况下,通知函数默认不执行任何作。
这些函数是可重写的回调函数。
CAsyncSocket
并将 CSocket
消息转换为通知,但如果你希望使用通知,则必须实现通知函数的响应方式。 在套接字收到相关事件的通知时调用通知函数,例如存在要读取的数据。
MFC 调用通知函数,让你在收到通知时自定义套接字的行为。 例如,可以从通知函数(即收到要读取数据的通知)调用Receive
OnReceive
时,调用Receive
读取数据。 此方法不是必需的,但它是一个有效的方案。 或者,可以使用通知函数跟踪进度、打印 TRACE 消息等。
可以通过重写派生套接字类中的通知函数并提供实现来利用这些通知。
在接收或发送数据等作期间, CSocket
对象变为同步。 在同步状态下,用于其他套接字的任何通知在当前套接字等待所需的通知时排队。 (例如,在调用期间 Receive
,套接字需要通知读取。)套接字完成同步作并再次变为异步作后,其他套接字可以开始接收排队通知。
注释
在 CSocket
中,从不调用 OnConnect
通知函数。 对于连接,调用 Connect
时将返回连接(成功或出错)。 如何处理连接通知取决于 MFC 实现细节。
有关每个通知函数的详细信息,请参阅 MFC 参考中的类CAsyncSocket
下的函数。 有关 MFC 示例的源代码和信息,请参阅 MFC 示例。
有关详细信息,请参见: