https://www.cnblogs.com/liuning8023/archive/2013/04/08/3008765.htmlhtml
在 Windows 平台开发网络程序, 可使用不一样的库, 可是最经常使用的仍是微软本身开发的库。具体说来:chrome
Winsock 是工做于网络层和传输层的库,对于编写 TCP,UDP,以及原始 IP 通讯程序很是合适。函数原形也基本符合 Unix socket 标准。编程
Windows 平台上大多数程序,如 QQ,讯雷等都基于其开发。浏览器
ws2_32 是 Winsock 升级版,在兼容的基础上增长了不符合 Unix socket 标准,但更适合 Windows 平台的库函数,通常以 WSA* 开头。服务器
现代的大多数 Windows 平台程序也都开始依赖于此库。网络
WinInet 是 Windows Internet 扩展库,工做于应用协议层,提供了 http,ftp,gopher 协议的实现,为基于以上三种协议的程序开发提供基础平台。socket
须要说明的是,尽管 WinInet 工做于应用层,但其自己 wininet.dll 实现并不依赖于 winsock.dll 或 ws2_32.dll,而是独立存在的。至少目前的版本是这样。基于 WinInet 的应用程序最著名的例子就是IE了。函数
WinHttp 也工做于应用协议层,提供了 http 协议的实现。看起来与 WinInet 有重复的部分,WinHttp 就是为了替换 WinInet 中的 http 部分的,它更加健壮稳定,并且还为 http 服务器端开发提供了库函数。google
若是进行现代 http 开发,建议使用 WinHTTP 而不是 WinInet。使用 WinHTTP 进行开发的著名例子就是 Google 浏览器 Chrome,可是 Chrome2.0 之后版本 google 放弃了 winhttp 而是使用了本身开发的 http 库,这也是为了使 chrome 实现跨平台的重要举措。另外,WinHttp.dll 也不依赖于 winsock或ws2_32,也是独立运行的。htm
若是基于 socket 编程,Winows 平台与其它平台函数基本相同,实现跨平台比较容易。
若是基于http进行编程的话,不一样平台库差异很大,若是不考虑跨平台使用 WinHttp,若是考虑跨平台能够考虑使用 libwww。
另外,wsock 和 wininet 或 winhttp 也能够同时使用。