【发布时间】:2011-03-24 03:53:52
【问题描述】:
我是 Visual Studio 的新手。我读了一些 MFC 仅支持 winsock1 的地方。 MFC不支持winsock2是真的吗?
【问题讨论】:
标签: visual-studio-2008 mfc winsock2
我是 Visual Studio 的新手。我读了一些 MFC 仅支持 winsock1 的地方。 MFC不支持winsock2是真的吗?
【问题讨论】:
标签: visual-studio-2008 mfc winsock2
我只是引用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。
【讨论】:
奇怪的是,它看起来只使用 1.1。
您应该在安装 VS 时拥有源代码 - 您会在 stdafx.h 中看到它包含 winsock.h(不是 2),在 sockcore.cpp 中有用于初始化 1.1 的代码。 VS2010的MFC也是一样。
如果您想在自己的代码中使用 winsock2,则必须在项目的 stdafx.h 中的 MFC 标头之前包含标头,这样声明就不会发生冲突。希望这不会破坏 AfxSocket 接口:-/
【讨论】: