¿Cómo podemos hacer un programa para la comunicación en serie entre dos PC usando lenguajes C / C ++?

Dada la descripción adicional en un comentario anterior, parece que la intención es proporcionar una aplicación de transferencia de datos bidireccional utilizando una conexión Ethernet.

Ethernet define la capa de enlace de datos, por lo que no sería posible la comunicación de datos en serie a través del cable como si fuera un UART [en serie] (receptor / transmisor asíncrono universitario). Sin embargo, si se desea (aunque no es ideal), sería posible realizar una comunicación en serie a través de la capa Ethernet (transmitiendo un solo bit por trama Ethernet).

Dado que Ethernet simplemente proporciona la capa de enlace de datos, hay una multitud de opciones disponibles (por ejemplo, TCP / IP a través de Ethernet con un protocolo personalizado). Si la transferencia de archivos es el único objetivo, bastaría simplemente con usar FTP (a través de TCP / IP a través de Ethernet).

Es posible crear un socket Ethernet sin formato (familia de direcciones: paquete, tipo de socket: raw en Linux o mediante winpcap en Windows) y luego construir las tramas Ethernet para transmitir los datos según lo necesite.

Tenga en cuenta que no puedo proporcionar un código C / C ++ específico, pero puedo proporcionarle consejos sobre dónde comenzar sus investigaciones.

¿Desea reutilizar una tarjeta Ethernet como dispositivo serie? La respuesta corta es que no puedes. La tarjeta en sí tiene alguna funcionalidad en la capa de enlace de datos, por lo que su reutilización no es práctica. No puede hablar directamente con un dispositivo en serie a través de una interfaz ethernet; esto requiere hardware especializado, un convertidor de serie a Ethernet para uno. Supongo que no desea hablar con un convertidor de serie a Ethernet o su pregunta habría sido más específica. PC a PC a través de Ethernet tampoco entraría en esta categoría.

Si todo lo que tiene es un dispositivo Ethernet para E / S, y desea una comunicación muy rápida entre dos dispositivos, su mejor opción es conectar los dos dispositivos directamente con un cable cruzado. Configure los dispositivos para usar full duplex y la velocidad máxima disponible en el sistema. (Gigabit Ethernet puede requerir un cable especial).

Si la velocidad máxima es lo que necesita:
Una vez que los dispositivos están conectados, puede usar marcos Jumbo de 9000 bytes para pasar el límite de 1500 bytes. Esto será específico del dispositivo. No puedo comentar con qué frecuencia un dispositivo permitirá marcos grandes, pero puede que no sea común.

De lo contrario, se pueden formar paquetes UDP de hasta 65535 (total) bytes. Estos se fragmentarán en la capa de enlace de datos, pero esto puede ser aceptable. Además, el uso de IPv6 puede aumentar enormemente el tamaño de los datagramas UDP (2 ^ 32-1 bytes), lo que podría emular una conexión en serie.

A menos que tenga un requisito muy específico para la comunicación en serie entre dispositivos (en cuyo caso necesita hardware nuevo), sería más fácil implementar las comunicaciones IP. Si debe usar una tarjeta Ethernet, terminará implementando comunicaciones IP / Ethernet independientemente.