Очень простой объект 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.cexample/spam_hello_world.cbin/udpcat.cОбычный танец CMake/Make.
mkdir build
cd build
cmake ..
makeudpcat После создания вы можете довольно просто заставить два процесса udpcat взаимодействовать друг с другом. Просто откройте один сеанс как udpcat 12345 127.0.0.1 12346 , а другой как udpcat 12346 127.0.0.1 12345 . Любые строки, введенные в командной строке (ввод stdin ), будут отправлены другому процессу udpcat и выведены на stdout .