Red de conocimiento informático - Conocimiento informático - ¿Qué necesita aprender sobre el desarrollo de servidores?

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