¿Qué modelo de socket debería utilizar el cliente (alrededor de 100 de ellos)?
1. Programación ordinaria con bloqueo y sin bloqueo.
Utilizando la tecnología de grupo de subprocesos y el grupo de memoria, la tecnología de grupo SOCKET básicamente puede manejar alrededor de 1500 conexiones SOCKET, pero las máquinas que usamos generalmente tienen aproximadamente dos M de memoria, sin cambiar el tamaño de la pila de subprocesos. Podemos crear hasta 1.780 hilos, pero es básicamente imposible moverlos. Nuestra prueba básicamente alcanza alrededor de mil subprocesos y la máquina se vuelve muy lenta.
También en WIN-XP-SP2, se procesa la concurrencia de subprocesos en un solo proceso. El valor predeterminado es 10. Existen muchos métodos de modificación en Internet.
2. Modelo SELECT (asíncrono y síncrono)
Este modelo tiene por defecto 64 conexiones SOCKET como máximo en un solo hilo. Puede modificar FD_SETSIZE en el archivo WINSOCK2.h, pero no debe exceder el límite del WINSOCK subyacente (1024). Sin embargo, si se utilizan subprocesos múltiples, se pueden procesar más. Se recomienda que el número máximo real no exceda 1000. en un solo subproceso, en cuanto a subprocesos múltiples, también se debe controlar la eficiencia del cambio de subprocesos y el tiempo de procesamiento de datos. No debería haber ningún problema con unos pocos miles.
3. Modelo WSAASYNCSELECT
Este modelo utiliza el mecanismo de mensajes y se recomienda no exceder los 1000.
4. Modelo WSAEVENTSELECT
Este modelo utiliza un enfoque basado en eventos. Un solo subproceso no excede 64 (WSAWaitForMultipleEvents puede esperar hasta 64 eventos si hay varios SOCKET). Al mismo tiempo, se debe utilizar un grupo de subprocesos. No debería haber ningún problema con unos pocos miles.
5. IO superpuestas
Miles de ellos no deberían ser un problema. Al fin y al cabo, se trata de una base técnica para el siguiente IOCP.
6. IOCP completa la superposición de puertos IO
Esta es el arma definitiva para resolver la comunicación SOCKET. Desafortunadamente, solo se usa en WIN y superiores a 2000. Parece haber un EPOLL similar. en LINUX Y parece ser más fácil de usar que este, pero no lo he usado específicamente. Esto debería ser muy fácil de resolver con decenas de miles de SOCKET concurrentes. Por supuesto, debe mantenerse al día con sus habilidades y tecnología de programación.
Revisé en Internet y dije que si usas una versión de servidor del sistema operativo y la máquina, la potencia máxima de esta cosa puede alcanzar los 100 W. Da demasiado miedo. El tipo mismo tiene una potencia máxima. de 50.000 en XP, pero sigue apareciendo ERROR de desbordamiento de memoria. Su nivel más alto fue 9W.