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.