¿Vale la pena aprender programación de sockets?

Yo diría que no es útil para la mayoría de los programadores en la práctica real (excepto para los fabricantes de hardware) . Las principales razones relacionadas con el trabajo para aprenderlo serían optimizar los servidores de nivel de juego / financiero / centro de datos, ciberseguridad o escribir su propio navegador web / sistema operativo / base de datos. Probablemente olvidé algunos otros casos de uso, pero el punto es que el número real de personas necesarias para estos trabajos es lo suficientemente bajo como para que normalmente solo contraten a los mejores de los mejores .

casi cualquier otro escenario (que no sea hardware) que creas que necesitas una comprensión profunda de la programación de socket, realmente no lo necesitas. reinventar un nuevo protocolo / infraestructura de socket es una gran pérdida de tiempo para la mayoría de las empresas. Si trabajas para una empresa relacionada con la web (lo que casi seguro harás), la mayoría de los ingenieros frontend se negarían rotundamente a utilizar tu “protocolo de socket nuevo y mejorado”. el protocolo http existente es “suficientemente bueno” para el 99% de los casos de uso de negocios. y http es lo suficientemente maduro en todos los lenguajes de programación, que raramente tiene que depurar su implementación de socket de bajo nivel (a menos que sea un ingeniero de sistemas).

para la persona que lo contrató, todo lo que realmente le importa es que el sitio web frontend puede hablar de manera confiable con el backend. y el backend más confiable es uno que usa http, donde normalmente no se requeriría una depuración de socket de bajo nivel.

Si está hablando del socket de comunicación (flujo / gramo de datos), aprender “programación de socket” significa que debe saber cómo funciona el socket. Debe saber qué está orientado a la conexión y qué no tiene conexión, cómo afectará a su transmisión de datos, cómo se establece la conexión, quién inicializa la conexión y qué debe hacer el otro lado para aceptar la conexión entrante y cómo tratar la conexión perdida.

Y también debe aprender qué es la lectura en bloque, qué es el subproceso múltiple y por qué las personas necesitan subprocesos múltiples para la comunicación, qué es la ejecución de subprocesos, qué es mutex y, lo más importante, cómo escribir un programa de conexiones múltiples de subproceso único .

No te recomendaré que aprendas de las API de biblioteca estándar como libc socket o WinSock. En cambio, le recomendaría que lea la guía de programación de algunos marcos de programación multiplataforma, como la biblioteca Boost, Python o Java.

Si desea seguir su carrera en el campo de las redes, entonces vale la pena aprender programación de sockets. En general, se considera un campo menos importante y uno de cada mil profesionales de la informática trata de tener algún conocimiento al respecto.

Todo depende de lo que tenga en mente para su futuro. El conocimiento nunca está de más, pero a menos que planees usarlo, puede que no sea así. ¿Vale la pena aprender, solo por diversión? Solo si lo encuentras extremadamente agradable.

Creo que la mayoría de los programadores nunca lo aprendieron y probablemente lo hayan necesitado ni lo necesitarán.

Usé socket en C en 2000. En realidad, dos programas en C se comunicaban de esta manera.

Ahora, creo que hay otras formas de hacerlo ahora, incrustadas en las API.

Pero si trabaja en sistemas heredados, o en el área de telecomunicaciones, puede ser útil.