我想知道以前是否做过这样的事情:
我最近开始使用 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 网络库?
你会使用它们吗?