Очень простой объект C, который обертывает API сокетов BSD для обеспечения абстракции пары сокетов UDP. По сути, предположим, что у вас есть две известные конечные точки, которым необходимо взаимодействовать друг с другом через UDP. Вы знаете порт, на котором принимаете данные, и адрес/порт другой конечной точки. Вы можете определить объект пары UDP, который представляет вашу конечную точку, и просто отправлять/получать для этой настройки.
Если вы посмотрите на код, то увидите, что это по большей части игрушка, поскольку выполнить такую настройку очень просто ( bind()
, connect()
, send()
, recv()
), но это может быть удобной абстракцией для тех, кто которые не настолько разбираются в розетках.
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 );
Источники примеров более подробны, чем этот фрагмент, из-за проверки ошибок. Предусмотрено три примера:
example/echo_server.c
example/spam_hello_world.c
bin/udpcat.c
Обычный танец CMake/Make.
mkdir build
cd build
cmake ..
make
udpcat
После создания вы можете довольно просто заставить два процесса udpcat
взаимодействовать друг с другом. Просто откройте один сеанс как udpcat 12345 127.0.0.1 12346
, а другой как udpcat 12346 127.0.0.1 12345
. Любые строки, введенные в командной строке (ввод stdin
), будут отправлены другому процессу udpcat
и выведены на stdout
.