我是Visual Studio的新手。我读到过一些MFC只支持winsock1的地方。MFC不支持winsock2是真的吗?
发布于 2010-08-02 19:29:00
我只是引用了here的话。
包含更改:#
收件人:#include
除了能够使用特定于winsock2的调用之外,没有任何不同。即使你只包含winsock.h,你也可以实际使用winsock2。实际的区别在于你是链接到wsock32.lib (winsock1.1)还是ws2_32.lib (winsock2.2)。正如我所指出的,你必须使用它。简单地更改头文件或链接到的库并不会对性能、效率等产生任何影响。实际上,在不使用ws2的情况下切换到BSD时,您可能会失去与支持纯BSD套接字调用的操作系统的兼容性。
Winsock2是为性能而来的。IO由windows内核管理(例如重叠io )。所有的winsock1.1,比如基本的send/recv调用都被直接映射到winsock2.2的对应部分(WSASend/WSARecv).winsock2是完全向下兼容winsock.的
发布于 2010-08-02 19:16:28
奇怪的是,它看起来只使用了1.1。
你应该有你的VS安装的源代码-你会在stdafx.h中看到它包含winsock.h (而不是2),并且在sockcore.cpp中有初始化1.1的代码。VS2010的MFC是一样的。
如果您想在自己的代码中使用winsock2,则必须在项目的stdafx.h中的MFC头之前包含header,这样声明就不会冲突。希望这不会破坏AfxSocket接口:-/
https://stackoverflow.com/questions/3387142
复制相似问题