我对Visual Studio更新鲜。我读了一些MFC仅支持winsock1的地方。 MFC不支持winsock2是真的吗?
答案 0 :(得分:1)
奇怪的是,看起来它只使用1.1。
您应该在VS安装中获得源代码 - 您将在stdafx.h中看到它包含winsock.h(不是2),而在sockcore.cpp中则包含初始化1.1的代码。 VS2010的MFC是一样的。
如果要在自己的代码中使用winsock2,则必须在项目的stdafx.h中的MFC头之前包含头,这样声明不会发生冲突。希望这不会破坏AfxSocket接口: - /
答案 1 :(得分:1)
我刚引用here。
改变:
#include <winsock.h>
致:
#include <winsock2.h>
除了能够使用之外没有任何区别 winsock2特定的电话。你可能 实际上即使你使用winsock2 仅包括winsock.h。该 无论你是否真实存在差异 正在链接到wsock32.lib(winsock 1.1)或ws2_32.lib(winsock 2.2)。正如我所指出的,你必须使用它。只是 通过更改头文件或 你链接的lib没有 绩效的任何差异, 效率,无论如何。其实你可以 松散与OS的兼容性 支持纯BSD套接字调用时 在不使用它的情况下更改为ws2。
Winsock2进入表演。该 IO由windows kernal管理(如 例如,重叠io)。你的全部 winsock 1.1等基本发送/接收 调用直接映射到 winsock 2.2对应 (WSASend / WSARecv).winsock2纯粹是 与winsock向下兼容。