Я хотел бы знать, было ли что-то подобное сделано раньше:
Я недавно начал работу над сетевой библиотекой на C. Библиотека поддерживает набор сокетов, каждый из которых связанс двумя байтовыми потоками FIFO, входными и выходными.
Предполагается, что разработчик, использующий библиотеку, зарегистрирует некоторые обратные вызовы, состоящие из функции распознавателя и функции-обработчика.Если новые данные поступают в сокет (т. Е. Входной поток), вызывается каждый распознаватель.Если один из распознавателей находит совпадающую часть данных, вызывается связанный с ним обработчик, который потребляет данные и, возможно, ставит в очередь новые данные в выходном потоке сокета, который планируется передать позже.
Вот примерПонятно, как используется библиотека:
// create client socket
client = nc_create(NC_CLIENT);
// register some callback functions that you'll have to supply yourself
nc_register_callback(client, &is_login, &on_login);
nc_register_callback(client, &is_password, &on_password);
// connect to server
nc_dial(client, "www.google.com", "23");
// start main loop (we might as well have more than one connection here)
nc_talk();
Для меня это наиболее очевидный способ написания сетевой библиотеки общего назначения на C. Я провел некоторые исследования с помощью Google, но не смог найтичто-то похожее написано на C. Но трудно поверить, что я первый, кто реализует этот подход.
Существуют ли другие подобные сетевые библиотеки общего назначения на основе C, подобные этой?Вы бы их использовали?