有谁知道WinSock.h和WinSock2.h之间的区别。我知道他们不使用相同的库(.lib),但我不知道WinSock2是否只添加了新功能,或者它是否也改进了WinSock 1功能。我正在使用IP / TCP套接字,并希望使用select()管理超时。我还使用多个线程同时管理多个客户端。我应该继续使用WinSock 1.1还是应该转移到WinSock 2?提前致谢。
答案 0 :(得分:16)
您应该使用winsock2.h
。
几点:
winsock.h
应与wsock32.lib
一起使用,winsock2.h
应与ws2_32.lib
一起使用winsock.h
和winsock2.h
不应该在同一个项目中,winsock2.h
替换winsock.h
而不是扩展它。winsock.h
只应在您使用旧版Windows(如Windows 95 / Windows NT 3.5)时使用。winsock.h
)是在Windows for Workgroups(代号为Snowball)的附加软件包(称为Wolverine)中提供的。它是Windows 95和Windows NT从版本3.5及以后版本中不可或缺的组件(Windows NT的初始商用版本,版本3.1,仅包含基于AT& 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发布或作为服务包的一部分提供。
Winsock 2可通过称为分层服务提供程序(LSP)的机制进行扩展。 Winsock LSP可用于各种有用的目的,包括Internet父母控制,Web内容过滤,QoS等。
答案 1 :(得分:7)
Winsock.h用于保存在16位版本的Windows中开始生效的代码编译。您应该始终使用Winsock2.h并在新项目中链接到ws2_32.lib。