2010-08-02 24 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