windows下gethostbyname 调用失败

gethostbyname()函数属于WinSock API库,而在使用WinSock API之前,必须调用WSAStartup函数,
只有该函数成功返回(表示应用程序与WinSock库成功地建立起连接),

应用程序才可以调用其他Windows Sockets DLL中的函数。当程序将要结束时,又必须调用WSACleanup 函数进行清理工作,以便释放其占用的资源。
WSACleanup 函数用来结束Windows Sockets DLL的使用。

WSAStartup与WSACleanup
WSAStartup应该与WSACleanup成对使用,WSAStartup的功能是初始化Winsock DLL,WSACleanup是来解除与Socket库的绑定并且释放Socket库所占用的系统资源。

在Windows下,Socket是以DLL的形式实现的。在DLL内部维持着一个计数器,只有第一次调用WSAStartup才真正装载DLL,以后的 调用只是简单的增加计数器,而WSACleanup函数的功能则刚好相反,每调用一次使计数器减1,当计数器减到0时,DLL就从内存中被卸载!因此,你 调用了多少次WSAStartup,就应相应的调用多少次的WSACleanup.
原文地址:https://www.cnblogs.com/lisuyun/p/5809172.html