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 ...