differences diferencias c++ networking resources

diferencias - Redes con C++



Soy un recién llegado al uso de C ++, pero tengo una idea general de su sintaxis y usabilidad. Sin embargo, quiero aprender a comunicarme a través de redes a través de la programación en C ++, pero parece que no puedo encontrar ningún tutorial específicamente para C ++. ¿Alguien sabe algún recurso bueno para aprender sobre la creación de redes con C ++ o con qué debería empezar?




Estoy seguro de que un grupo de personas de C ++ que desprecian la forma de hacer las cosas de C me odiarán por esto, pero el enfoque clásico es usar las API de socket de Berkeley (llamadas así porque tienen sus orígenes en BSD). Si se dirige a Windows, las API "en gran medida compatibles con origen e inspiradas por Unix" se denominan Winsock . Yo diría que haga una búsqueda web para el tutorial de socket y probablemente obtendrá información útil. Con un poco de cuidado y tal vez un #ifdef o dos, no es tan difícil crear código que funcione en Linux, BSD, Mac (que proporcionan conectores BSD) y Windows (con Winsock) usando lo que es común entre estas dos interfaces.

Para las personas más inclinadas a C ++, menos al estilo C, o para aquellas a las que no les gusta codificar contra las API del sistema operativo, estoy seguro de que hay bibliotecas C ++ que ofrecen envoltorios y abstracciones para estos mismos conceptos. Dado que Boost parece ser bastante popular, yo diría que vean lo que tienen .


La biblioteca estándar de C ++ no tiene soporte para esto, por lo que debe utilizar la API del sistema o alguna biblioteca de abstracción, por ejemplo, QT.



Dada tu novedad en C ++, no recomendaría construir directamente en las API de sockets a menos que no puedas encontrar una biblioteca adecuada para usar. Boost.Asio te dará una gran ventaja y te expondrá a las abstracciones de alto nivel utilizadas en la programación de redes.

Es fácil cuando se comienza a construir un sistema basado en sockets para obtener algo que funcione y luego pasamos semanas depurando casos de esquinas que solo ocurren en condiciones reales de tiempo y carga. Usar boost::asio correctamente no es nada fácil, incluso si protege a los desarrolladores de las complejidades del manejo de sockets crudos.

Si el objetivo es aprender a usar sockets crudos (o algún otro mecanismo de transporte como RPC) correctamente, entonces ejecute los suyos propios utilizando muestras y documentos en línea para comprender las API individuales de BSD o Winsock, si el objetivo es resolverlo un problema de negocios tan rápido como sea posible con un código de alta calidad en el lado de la infraestructura comercial y de red, luego utilice una buena biblioteca de red. En este caso, su pregunta indica un deseo de aprender, por lo que usar una biblioteca puede no ser la mejor manera de lograr su objetivo establecido.