Cómo aprender programación de sockets en C ++

Libro de Richard Stevens sobre programación de socket Unix.
En realidad, hay muchos tipos, familias y clases de enchufes diferentes y la siguiente parte será tediosa, ya que no hay libros o sitios web que hablen sobre todos ellos.
Las familias son:
AF_UNIX , AF_LOCAL Comunicación local unix (7)
AF_INET IPv4 Protocolos de Internet ip (7)
AF_INET6 IPv6 Protocolos de Internet ipv6 (7)
AF_IPX IPX – Protocolos de Novell
AF_NETLINK Kernel dispositivo de interfaz de usuario netlink (7)
AF_X25 ITU-T X.25 / ISO-8208 protocolo x25 (7)
AF_AX25 Protocolo de radioaficionado AX.25
AF_ATMPVC Acceso a PVC en bruto ATM
AF_APPLETALK Appletalk ddp (7)
AF_PACKET Paquete de interfaz de paquete de bajo nivel (7)

Los tipos son:
SOCK_RAW
SOCK_STREAM
SOCK_DGRAM

Además de eso, hay otras llamadas al sistema 8/10 y funciones C relacionadas con llamadas bloqueantes y no bloqueantes. Encontrar ejemplos de ellos incluso en Internet puede ser difícil.
No estoy tratando de desanimarlos, sino alentarlos a que lo descubran. Es un trabajo triste y poco inspirador.
¡La mejor de las suertes!

C ++ es un tipo estático, de forma libre, compilado, es un lenguaje de programación de propósito general desarrollado por Bjarne Stroustrup a partir de 1979 en Bell Labs que tiene características de programación imperativas, orientadas a objetos y genéricas, al tiempo que proporciona instalaciones para la manipulación de memoria de bajo nivel. C ++ se ejecuta en varias plataformas como Windows, Mac OS y la variada versión de UNIX que está diseñada tanto para principiantes como para profesionales e incluye objetos, clases, herencia, constructor, destructor, polimorfismo, espacio de nombres, encapsulación, cadenas, matrices y muchos más. . C ++ es un lenguaje de programación sofisticado, eficiente y de nivel intermedio que también se ha encontrado útil en muchos otros contextos con fortalezas clave como la infraestructura de software y las aplicaciones de restricción de recursos, incluidas las aplicaciones de escritorio y los servidores. C ++ está estandarizado por la Organización Internacional de Normalización con un sesgo hacia la programación del sistema e integrado con eficiencia de rendimiento y flexibilidad de uso como aspectos destacados de su diseño.

Supongo que le gustaría poder escribir un programa completo de cliente-servidor. Además de conocer un lenguaje de programación como C ++, aquí hay algunos otros temas que debe conocer:

  • Comprenda el lenguaje C : para mí, Linux / Unix son dos buenos sistemas operativos para aprender programaciones nativas, como la programación de sockets. Sus bibliotecas nativas tienden a estar escritas en C. Debería comprender C para usarlas.
  • Red de computadoras : necesitaría comprender las capas de red (modelo OSI), cómo los datos se envuelven en paquetes y cómo el cliente-servidor se “comunican” entre sí mediante un protocolo de comunicación como HTTP, SMTP … Las páginas RFC son recursos confiables para la red protocolo de lectura.
  • Un poco de conocimiento léxico para analizar el lenguaje: ayudará a su programa a interpretar los mensajes entrantes de protocolo correctamente.
  • Programación concurrente , en la que necesita saber cómo hacer un programa de procesamiento múltiple (principalmente) o de subprocesamiento múltiple, según el propósito de su programa. No te olvides de las técnicas de bloqueo, condición de carrera y bloqueo. Todos están en paquete de concurrencia.

Espero que te ayude a comenzar.

Editar:
Un compilador es un programa de traducción de código. No debería necesitar ningún compilador específico. En cambio, desde C ++, debe incluir los encabezados correctos y vincular su código ejecutable con las bibliotecas correctas (por ejemplo, socket pthread ).

Visite sitios web como stackoverflow, tutorialspoint y busque en google

Primero visita esto:
programación de socket (servidor y cliente en la misma computadora) algo mal con la conexión

La programación de sockets es el uso de protocolos de red para transferir datos de una máquina a otra, local o externamente. Utilizando principalmente la dirección IP y los números de puerto. Los datos pueden variar de objetos serializados a datos ASCII (texto) simples, a archivos.

Y aprenderá mucho sobre el enhebrado de síncrono a asíncrono, puntos muertos, bloqueo, cómo terminarlos de forma segura sin usar thread.abort (), etc. No estropearé la diversión.

los sitios web son:

Tutorial de enchufes
Tutorial de socket de Unix
Programación de socket C para Linux con un código de ejemplo de servidor y cliente
Linux.org
Tutorial de programación de redes y sockets en C

Los sockets son puertos utilizados por las conexiones de red, por lo que las aplicaciones estarían en el área de redes. (Usted “abre un zócalo a un puerto” de la misma manera que se conectaría a un puerto serie o USB). La diferencia es que los zócalos y los puertos de red son puertos lógicos, no puertos físicos. (El firmware de red en el sistema operativo se encarga de la traducción entre un puerto de red lógico y el hardware que está conectado a la red).

C ++ se puede usar para la programación de sockets. Solía ​​hacerlo en una empresa que hacía alimentación de datos en tiempo real para bancos de inversión. Sin embargo, incluso si no se usa, puede aprenderlo, ya que todo el conocimiento es útil y es más fácil hacer cosas si está interesado en ellos.

Los ejemplos de C seguirían siendo buenos, ya que funcionaría en C ++ de todos modos y te ayudarán a ver los principios básicos.

¿Has buscado los ejemplos de asio en las bibliotecas de impulso?

Míralos y trabaja en los ejemplos. Luego tome todos los ejemplos que vio para la programación en C y conviértalos para usar asio.

Intente configurar dos programas diferentes que se comuniquen entre sí a través de sockets. O configure un juego de acorazado con cada jugador en una instancia diferente del programa o incluso en una PC diferente, etc.

La programación de sockets es muy fácil en c ++ y más fácil en python.
Las cosas importantes en el socket básico son la dirección IP, el número de puerto y algunas primitivas básicas del socket.
Ir a través del enlace para aprender socket en c ++:
Página en codeproject.com

Depende de qué sistema operativo esté programando. Si está programando para Windows, mire la biblioteca WinSock de la API de Windows, también hay otras soluciones multiplataforma (Boost :: Asio y otras cosas). Cualquier compilador hará el trabajo, pero si está programando para Windows, prefiere los compiladores que se envían con Visual Studio, tienen un mejor soporte para la API que GCC.
¡La mejor de las suertes!

Puede referir esto y convertirlos a cpp

CN Codes – Aplicaciones de Android en Google Play

Nada puede vencer a este:
Guía de Beej para la programación de redes