在 MFC 中,CAsyncSocket 类确实有一个受保护的虚拟方法 OnReceive,它在异步套接字接收到数据时被调用。你可以在派生自 CAsyncSocket 的类中覆盖这个方法,以便在接收到数据时执行自定义的操作。

以下是 CAsyncSocket::OnReceive 方法的基本结构:
class CAsyncSocket : public CObject
{
public:
    // ... 其他成员函数和成员变量 ...

protected:
    virtual void OnReceive(int nErrorCode);

    // ... 其他受保护的成员函数和成员变量 ...
};

在你的派生类中,你可以像这样覆盖 OnReceive 方法:
class MySocket : public CAsyncSocket
{
protected:
    virtual void OnReceive(int nErrorCode)
    {
        if (nErrorCode == 0)
        {
            // 处理接收到数据的代码
            // ...
        }
        else
        {
            // 处理错误的代码
            // ...
        }

        // 调用基类的 OnReceive,以确保正常的处理
        CAsyncSocket::OnReceive(nErrorCode);
    }
};

在这个例子中,OnReceive 方法被覆盖,你可以在其中添加处理接收到数据的自定义代码。在处理完毕后,调用了 CAsyncSocket::OnReceive,以确保正常的处理。

请注意,接收到的数据可以通过调用 Receive 方法获取。


转载请注明出处:http://www.zyzy.cn/article/detail/15553/MFC/CAsyncSocket