1、win Sockes 的组成
Windows Sockets库由两部分组成:开发组件和运行组件
- 开发组件:由Win Sockes 实现文档、Win Sockets API 引入库和一些头文件组成
- 头文件:
- winsock.h → WinSock1
- winsock2.h → WinSock2
- 头文件:
运行组件:Win Sockets 应用程序接口(Application Programming Interface,API)的动态链接库(Dynamic-link library,缩写为DLL)。 | 头 文 件 | 版 本 | 静态链接库文件 | 动态链接库文件 | | —- | —- | —- | —- | | winsock.h | WinSock 1 | winsock.lib | winsock.dll | | winsock2.h | WinSock 2 | ws2_32.lib | ws2_32.dll |
静态链接库是.lib格式的文件,一般在工程的设置界面加入工程中,程序编译时会把lib文件的代码直接链接进目标程序中,因此会增加代码大小,静态链接的可执行文件会大一些,程序运行的时候不再需要其它的库文件,不能手动移除lib代码。
- 动态链接库是一个包含可由多个程序同时使用的代码和数据的库,它是包含函数和数据的模块,格式.dll。程序运行时动态加载这些模块,运行时可以随意加载和移除,节省内存空间。
😀本笔记的所有代码都是基于WinSock 2,采用静态链接库
2、Windows Sockets DLL 的初始化和释放
对于所有在Windows sockets 上开发的应用程序,在它调用任何Win Sockets API之前,必须先调用函数** WSAStartup()**来完成Windows Sockets DLL的初始化(协商版本支持、分配必要的资源),在程序完成了对Windows Sockets的使用之后,必须先调用函数 **WSAcleanup() **从Windows Sockets实现中注销自己。
- Windows Sockets DLL 的初始化
- WSAStartup() 函数
❗其它Win Sockets函数都要在 WSAStartup() 函数被成功调用之后才能正常工作。
- WSAStartup() 函数
- Windows Sockets DLL 的释放
