Un objeto C muy simple que envuelve la API del socket BSD para proporcionar una abstracción del par de sockets UDP. Básicamente, digamos que tiene dos puntos finales conocidos que necesitan comunicarse entre sí a través de UDP. Usted sabe el puerto en el que está recibiendo y la dirección/puerto del otro punto final. Puede definir un objeto de par UDP que represente su punto final y simplemente enviar/recibir para esa configuración.
Si observa el código, verá que es principalmente un juguete porque realizar dicha configuración es muy sencillo ( bind()
, connect()
, send()
, recv()
), pero puede ser una abstracción útil para aquellos que no son tan expertos en enchufes.
struct udp_pair * pair = udp_pair_create ( recv_port , dest_ip4 , dest_port );
char buf [ 512 ];
while ( 1 ) {
ssize_t bytes_recvd = 0 ;
udp_pair_recv ( pair , ( void * ) buf , sizeof ( buf ), & bytes_recvd );
if ( bytes_recvd > 0 ) {
udp_pair_send ( pair , ( void * ) buf , bytes_recvd , NULL );
}
}
udp_pair_free ( pair );
Las fuentes de ejemplo son más detalladas que este fragmento debido a la verificación de errores. Se proporcionan tres ejemplos:
example/echo_server.c
example/spam_hello_world.c
bin/udpcat.c
El baile habitual de CMake/Make.
mkdir build
cd build
cmake ..
make
udpcat
Una vez creado, puede hacer que dos procesos udpcat
se comuniquen entre sí de forma bastante sencilla. Simplemente abra una sesión como udpcat 12345 127.0.0.1 12346
y la otra como udpcat 12346 127.0.0.1 12345
. Cualquier línea ingresada en el indicador (entrada stdin
) se enviará al otro proceso udpcat
y se imprimirá en stdout
.