【问题标题】:Does MFC support winsock2?MFC是否支持winsock2?
【发布时间】:2011-03-24 03:53:52
【问题描述】:

我是 Visual Studio 的新手。我读了一些 MFC 仅支持 winsock1 的地方。 MFC不支持winsock2是真的吗?

【问题讨论】:

    标签: visual-studio-2008 mfc winsock2


    【解决方案1】:

    我只是引用here

    变化:

    #include <winsock.h>
    

    收件人:

    #include <winsock2.h>
    

    除了能够使用 winsock2 特定的调用。你可能会 实际使用winsock2,即使你 仅包括winsock.h。这 实际的区别是你是否 正在链接到 wsock32.lib (winsock 1.1) 或 ws2_32.lib (winsock 2.2)。正如我指出的,你必须使用它。简单地 通过更改头文件或 你链接的lib不会 任何形式的性能差异, 效率,随便。其实你可以 与操作系统松散的兼容性 支持纯 BSD 套接字调用 在不使用的情况下更改为 ws2。

    Winsock2 是为了表演而来的。这 IO 由 Windows 内核管理(如 例如重叠 io)。你所有的 winsock 1.1 如基本发送/接收 调用直接映射到 winsock 2.2 对应 (WSASend/WSARecv).winsock2 纯粹是 向下兼容winsock。

    【讨论】:

      【解决方案2】:

      奇怪的是,它看起来只使用 1.1。

      您应该在安装 VS 时拥有源代码 - 您会在 stdafx.h 中看到它包含 winsock.h(不是 2),在 sockcore.cpp 中有用于初始化 1.1 的代码。 VS2010的MFC也是一样。

      如果您想在自己的代码中使用 winsock2,则必须在项目的 stdafx.h 中的 MFC 标头之前包含标头,这样声明就不会发生冲突。希望这不会破坏 AfxSocket 接口:-/

      【讨论】:

      • 感谢 Rup 的简短解释。
      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 2019-10-04
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      相关资源
      最近更新 更多