WinSock.h和WinSock2.h哪个使用?

有谁知道WinSock.h和WinSock2.h之间的区别。 我知道他们不使用相同的库(.lib),但我不知道如果WinSock2只增加了新的function,或者如果它也提高了WinSock 1function。 我正在使用IP / TCP套接字,并想用select()来pipe理超时。 我也使用多个线程同时pipe理多个客户端。 我应该继续使用WinSock 1.1还是移动到WinSock 2? 提前致谢。

你应该使用winsock2.h

几点:

  • winsock.h应与wsock32.lib一起使用, ws2_32.lib应与ws2_32.lib一起使用
  • winsock.hwinsock.h不应该在同一个项目中, winsock.h替换winsock.h而不是扩展它。
  • winsock.h应该只用于如Windows 95 / Windows NT 3.5的老版本的Windows。

微软的实施

Winsock的版本1.1winsock.h )是在Windows for Workgroups(代号为Snowball)的附加软件包(称为Wolverine)中提供的。 它是从版本3.5及以上的Windows 95和Windows NT不可或缺的组成部分(最初商用版本的Windows NT,版本3.1,仅包含基于AT&T UNIX系统V的TCP / IP的专有且相当不完整的实现“Streams “API。

Winsock的版本2.1winsock2.h )在Windows 95的附加软件包中提供。它是Windows 98,Windows NT 4.0和所有后续Windows版本的组成部分。 Winsock 2.x的最新版本已经与新的Windows版本一起提供,或作为服务包的一部分提供。

Winsock2增加了功能吗?

Winsock 2可以通过称为分层服务提供程序(LSP)的机制进行扩展。 Winsock LSP可用于广泛的用途,包括互联网家长控制,网页内容过滤,QoS等。

Winsock.h是在那里保持代码编译,在16位版本的Windows中开始生活。 您应该始终使用Winsock2.h并链接到新项目中的ws2_32.lib。