有谁知道 WinSock.h 和 WinSock2.h 之间的区别。我知道他们不使用相同的库 (.lib),但我不知道 WinSock2 是否只添加了新功能,或者它是否也改进了 WinSock 1 的功能。我正在使用 IP/TCP 套接字并希望使用 select() 管理超时。我还使用多个线程同时管理多个客户端。我应该继续使用 WinSock 1.1 还是应该迁移到 WinSock 2?提前致谢。
2 回答
您可能应该使用winsock2.h
.
几点:
winsock.h
应该wsock32.lib
和winsock2.h
应该一起使用ws2_32.lib
winsock.h
并且winsock2.h
不应该在同一个项目中,winsock2.h
替换winsock.h
而不是扩展它。winsock.h
仅当您针对 Windows 95 / Windows NT 3.5 等旧版本的 Windows 时才应使用。
微软实施
Winsock 的1.1 ( winsock.h
) 版在 Windows for Workgroups(代号为 Snowball)的附加包(称为 Wolverine)中提供。它是 Windows 95 和 Windows NT 3.5 及更高版本的一个组成部分(Windows NT 的初始商业版本 3.1,仅包括基于 AT&T UNIX System V“Streams”的专有且相当不完整的 TCP/IP 实现“API。
Winsock 2.1 ( winsock2.h
) 版是在 Windows 95 的附加程序包中提供的。它是 Windows 98、Windows NT 4.0 和所有后续 Windows 版本的组成部分。Winsock 2.x 的最新版本已与新的 Windows 版本一起提供或作为服务包的一部分提供。
Winsock2 是否添加了功能?
Winsock 2 可通过一种称为分层服务提供程序 (LSP) 的机制进行扩展。Winsock LSP 可用于广泛的有用目的,包括 Internet 家长控制、Web 内容过滤、QoS 等。
Winsock.h 用于保持从 16 位版本的 Windows 开始的代码编译。您应该始终使用 Winsock2.h 并在新项目中链接到 ws2_32.lib。