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

Ant*_*res 11 sockets windows ip tcp winsock

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

Dan*_*npe 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)时使用.

Microsoft实现

winsock.hWinsock的1.1版()是在Windows for Workgroups(代号为Snowball)的附加软件包(称为Wolverine)中提供的.它是Windows 95和Windows NT从版本3.5及更高版本(Windows NT的初始商用版本,版本3.1,仅包含基于AT&T UNIX System V的TCP/IP的专有且非常不完整的实现)的一个组成部分"Streams "API.

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

Winsock2是否增加了功能?

Winsock 2可以通过称为分层服务提供程序(LSP)的机制进行扩展.Winsock LSP可用于广泛的有用目的,包括Internet父母控制,Web内容过滤,QoS等.


Han*_*ant 8

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