¿Qué necesita aprender sobre el desarrollo de servidores?
Conocimiento utilizado por el servidor:
TCP/UDP, el más básico
Concurrencia: puede optar por utilizar selección, sondeo o subprocesos múltiples. Multiproceso
Si usa subprocesos múltiples, debe usar tecnología de sincronización: uno o más semáforos, mutex, variables de condición y, para la tecnología de subprocesos múltiples, también debe considerar el uso de Realizar separación de subprocesos. y fusionar,
Si usa múltiples procesos, entonces la tecnología de sincronización no es algo que deba considerar. Lo que debe considerar son los problemas relacionados con el proceso. ¿Cómo maneja el cliente? solicitud y cómo garantizar que los datos se puedan procesar y que no se genere ningún proceso zombie después de que el cliente se desconecte. También debe considerar el problema de la alta concurrencia
¿Qué método debería utilizar al enviar y recibir datos? De cualquier manera, ya sea con bloqueo o sin bloqueo, también existen problemas como el tiempo de espera de la conexión y la retransmisión.
Ya sea que elija TCP o UDP, si elige UDP estará ocupado y deberá retransmitirse usted mismo. Verifique y simule el protocolo de enlace de tres vías de TCP para garantizar que no se pierdan datos y el orden de los datos.
Hay muchas otras cosas que debe considerar. Lo anterior se refiere a C ++ en Linux. Estoy familiarizado con Windows C++ No lo entiendo
Libros recomendados: Programación de entorno avanzado UNIX, Programación de redes UNIX, Volumen 1. C++ es simplemente la forma en que usa estas tecnologías. Ya sea que use C o C++, puede aprender muchos conocimientos útiles de estos dos libros, pero no hay garantía de que pueda escribir programas de servidor de alta calidad.