【问题标题】:CAsyncSocket without subclassing?CAsyncSocket 没有子类化?
【发布时间】:2016-05-04 15:09:43
【问题描述】:

我正在寻找一种无需子类化即可使用 CAsyncSocket 的方法。到目前为止,在我发现的所有示例和教程中,它们都是它的子类,我想避免它。

提前谢谢你

【问题讨论】:

    标签: c++ sockets winapi mfc network-programming


    【解决方案1】:

    CAsyncSocket 旨在通过子类化来使用。它具有虚拟方法 - OnConnectOnReceive,必须由子类覆盖,以便应用程序代码处理事件。

    【讨论】:

    • 谢谢,那么没有子类化就没有办法使用了吗?
    • 必须将其本质上呈现为一个普通的 CSocket。
    【解决方案2】:

    不需要从CAsyncSocket 派生来使用它,尽管客户通常会这样做。如果您不派生(并实现回调处理程序),则几乎不可能以异步方式使用套接字。

    CAsyncSocket 与任何其他 C++ 类一样,并且可以以几乎相同的方式实例化(在具有自动存储持续时间的堆栈上,或者 - 更常见的是 - 在具有动态存储持续时间的免费存储中)。 MSDN 提供了使用“裸”CAsyncSocket:Windows Sockets: Using Class CAsyncSocket 的教程。

    【讨论】:

    • 干杯伙伴,我想我已经看过那个教程了。问题在于它根本没有解释如何与其他类一起使用它
    • @user3770392:这仅仅是因为将CAsyncSocket 与其他类一起使用并没有什么特别有趣的地方。这只是您的普通 C++ 课程。您具体需要了解什么?
    • 不知道你是否熟悉Qt,我想做类似的事情,例如当一个数据包到达时,另一个方法被调用。我想尽可能避免子类化。
    • @user3770392:您计划如何在不从CAsyncSocket 派生并实现自己的通知处理程序的情况下获得有关传入数据的通知?由于您一直在重复您希望避免从某个类派生,这听起来像是您真的在尝试避免学习 C++。
    • 总要学习肯定,但在 C++ 中有很多方法可以避免子类化。只传递一个函数指针或函子对我来说就可以了
    猜你喜欢
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2012-10-05
    相关资源
    最近更新 更多