gpt4 book ai didi

c - C 中的数据驱动网络方法。这不是新的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:27 25 4
gpt4 key购买 nike

我想知道以前是否做过这样的事情:

我最近开始使用 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 网络库吗?
你会使用它们吗?

最佳答案

这里有一些库提供了类似的 API,(在不同的层次上,例如 libevent 为套接字/文件描述符提供了一个通用的回调驱动的 API)

libesmtp ( example )

libevent

libcurl

太阳报/OncRPC API 具有类似的风格,因为库会为您完成繁重的工作,将请求分派(dispatch)给适当的回调处理程序。

Java nettymina库以类似的方式工作,但更面向对象。

关于c - C 中的数据驱动网络方法。这不是新的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com