2010-08-02 26 views

回答

1

我只是从here引用。

更改:

#include <winsock.h> 

要:

#include <winsock2.h> 

不会做出比能够使用 Winsock2的特定调用任何区别其他。即使您的 仅包含winsock.h,您可能实际上使用winsock2也是 。 实际区别在于您是否连接到wsock32.lib(winsock 1.1)或ws2_32.lib(winsock 2.2),是否您连接到 。正如我指出的,你必须使用它。通过更改头文件或链接的 简单地 不会使 在性能, 效率,任何不同。其实你可能 与os的松散兼容性, 支持纯粹的BSD套接字调用,当 更改为ws2而不使用它。

Winsock2进来的表演。 IO由窗口内核管理(例如, 与Io重叠)。你所有的 winsock 1.1如基本send/recv 调用直接映射到 winsock 2.2对应 (WSASend/WSARecv).winsock2纯粹是 与winsock向下相容。

1

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

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

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

+0

感谢您的简要解释Rup。 – 2010-08-02 11:21:38