Um objeto C muito simples que envolve a API de soquete BSD para fornecer uma abstração de pares de soquetes UDP. Basicamente, digamos que você tenha dois endpoints conhecidos que precisam se comunicar por UDP. Você conhece a porta em que está recebendo e o endereço/porta do outro ponto final. Você pode definir um objeto de par UDP que represente seu ponto final e simplesmente enviar/receber para essa configuração.
Se você olhar o código, verá que é principalmente um brinquedo porque realizar essa configuração é muito simples ( bind()
, connect()
, send()
, recv()
), mas pode ser uma abstração útil para aqueles que não são tão experientes em soquetes.
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 );
As fontes de exemplo são mais detalhadas do que este trecho devido à verificação de erros. Existem três exemplos fornecidos:
example/echo_server.c
example/spam_hello_world.c
bin/udpcat.c
A habitual dança CMake/Make.
mkdir build
cd build
cmake ..
make
udpcat
Uma vez construído, você pode fazer com que dois processos udpcat
se comuniquem de maneira bastante simples. Basta abrir uma sessão como udpcat 12345 127.0.0.1 12346
e a outra como udpcat 12346 127.0.0.1 12345
. Quaisquer linhas inseridas no prompt (entrada stdin
) serão enviadas para o outro processo udpcat
e impressas em stdout
.