我想知道之前是否已经完成过这样的事情:
我最近开始研究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网络库吗?
你会用它们吗?