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

时间:2012-12-30 20:41:41

标签: windows sockets tcp ip winsock

有谁知道WinSock.h和WinSock2.h之间的区别。我知道他们不使用相同的库(.lib),但我不知道WinSock2是否只添加了新功能,或者它是否也改进了WinSock 1功能。我正在使用IP / TCP套接字,并希望使用select()管理超时。我还使用多个线程同时管理多个客户端。我应该继续使用WinSock 1.1还是应该转移到WinSock 2?提前致谢。

2 个答案:

答案 0 :(得分:16)

您应该使用winsock2.h

几点:

  • winsock.h应与wsock32.lib一起使用,winsock2.h应与ws2_32.lib一起使用
  • winsock.hwinsock2.h不应该在同一个项目中,winsock2.h替换winsock.h而不是扩展它。
  • winsock.h只应在您使用旧版Windows(如Windows 95 / Windows NT 3.5)时使用。

Microsoft实现

Winsock的<1.1> 版本1.1 winsock.h)是在Windows for Workgroups(代号为Snowball)的附加软件包(称为Wolverine)中提供的。它是Windows 95和Windows NT从版本3.5及以后版本中不可或缺的组件(Windows NT的初始商用版本,版本3.1,仅包含基于AT&amp; T UNIX System V的TCP / IP的专有且非常不完整的实现) “Streams”API。

Winsock的<2.1> 版本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等。

答案 1 :(得分:7)

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