1、winsock api由ws2_32.dll导出。编程时需include winsock2.h(for winsock2.2) 或者include winsock.h(for winsock1.1,已不常用),并且需要link上lib:#pragma commment(lib, "wsock32.lib")
2、编程一般的过程是:
1)用WSAStartup 协商支持的socket版本
2)成功后,使用winsock的其他功能
3)最后用WSACleanup 清理winsock dll中使用的资源。
3、WSAStartup 可以在application 或dll中按需要多次调用,每次可以传入不同的请求信息参数;但由于WSAStartup 调用会导致加载protocol-specify dll,因此,请不要在DLLMain中调用,否则可能有潜在的死锁风险。而且,在每个WSAStartup 调用最后都必须有一个相应的WSACleanup 调用去清理资源。如果是多次调用WSAStartup ,那么需多次调用WSACleanup ;只有最后一次调用WSACleanup ,才真的清理资源,其他的WSACleanup 调用,只是减少引用计数。
4、winsock架构
5、