一段让人费解的话,关于CSocket的
CSocket对象实际是一个两态对象,有时异步(通常的状态)有时同步。在异步态,套接字能够接受来自框架的一不通告。但在操作过程中,例如接收或发送数据时,套接字就切换到同步状态。这意味着,套接字将不能接收其他异步通信,直到同步操作完成。对于其模式切换,程序员能够进行如下操作:
CMySocket::OnReceive()
{
...
ar>>str;
...
}
如果CSocket不是作为两态对象实现的,它在执行先前的通告时,可能会接收到同一事件的额外通告。例如,可能在执行一个OnRecive 时得到另一个OnReceive通告。在上面的代码段中,将字符串str从归档中加载的操作可能出现递归。通常的规则是:在通告中禁止通告。
上面两段摘自《VC++网络高级编程技术》,第二段是什么意思,我一直搞不懂,CSocket在执行先前的通告时会接收到同一事件的额外通告吗?CAsyncSocket呢?如果是,OnReceive函数又该如何改写呢?