socket programming example sockets winapi tcp wsastartup wsacleanup

sockets - example - windows socket programming



¿Cuál es el costo de WSAStartup y WSACleanup? (3)

Tengo un programa c ++ win32 que usa conectores para descargar algunos datos de un servidor.

Antes de usar sockets en Windows, se debe invocar WSAStartup. MSDN dice: "Debe haber una llamada a WSACleanup para cada llamada exitosa a WSAStartup. Solo la llamada final a la función WSACleanup realiza la limpieza real".

La forma más fácil para mí es llamar a WSAStartup / WSACleanup cada vez que descargo una paz de datos del servidor. La mayoría de las veces solo habrá una conexión a la vez, de modo que WSACleanup realizará una limpieza real.

Es por eso que me pregunto, ¿cuál es el costo de WSAStartup y WSACleanup? Quiero decir para realizar una limpieza real. Si las llamadas a WSAStartup y WSACleanup solo duran un tiempo corto en comparación con la conexión de socket completo, entonces puedo usar la manera fácil. De lo contrario, debería llamar a WSACleanup solo cuando salga del programa.


WSAStartup () carga los dlls necesarios. Pero si el dll ya está cargado, WSAStartup () simplemente aumenta un contador. WSACleanup () disminuye el contador y libera el dll una vez que el contador llega a cero.

Debería llamar a WSAStartup () en la función init de su aplicación, y WSACleanup () justo antes de salir de su aplicación.


Simplemente llame a WSAStartup una vez y nunca lo limpie. En serio, esta es una especie de arquitectura sobrante de Win3.1 y Win32s.


Use RAII para cargarlos solo una vez cuando se inicie la aplicación y luego para liberarlos cuando salga ...