C/C++ HTTP 库,只处理逻辑?
Posted
技术标签:
【中文标题】C/C++ HTTP 库,只处理逻辑?【英文标题】:C/C++ HTTP library, that handles only the logic? 【发布时间】:2011-01-05 02:22:28 【问题描述】:我正在寻找一个用于 C/C++ 的 HTTP 库,它只处理协议逻辑,而不是实际的传输机制。我遇到的图书馆倾向于使整个交流过程不协调,这不是我所需要的。
但是,我正在寻找的不仅仅是 HTTP 解析器。理想情况下,它还会处理诸如会话/连接管理、多路复用等之类的事情……只是它将通信细节的实际实现留给应用程序执行。我正在查看客户端和服务器端,尽管它们中的任何一个都会有所帮助。
最好我正在寻找免费的东西(尽管非 GPL)。 HTTPS 是一个优点。轻便是一个优点。简单是一大优势。
这样的吗?
【问题讨论】:
+1,我从来没有真正理解为什么库总是倾向于在一个整体包中完成所有事情(libxml2 有人吗?)。我也喜欢你“免费(虽然不是 GPL)”的态度。 为什么不是 GPL?是否有法律/知识产权要求或只是个人喜好? 因为没有人需要一个除了属性什么都不做的 XML 属性库。 jmucchiello,我实际上指的是通过 http/ftp 下载文件的 libxml2 功能。 【参考方案1】:我认为你会发现最好的东西是以分离的方式实现它。没有套接字实现的 html 服务器对世界上大多数人来说都是无用的。我会寻找分离良好的代码。这是一个非常简约的 html 服务器的示例,它似乎可以很好地分离,但不完全确定,因为我自己没有尝试过,但是您可以用自己的实现和包装器替换套接字类,然后这样做。
http://www.adp-gmbh.ch/win/misc/webserver.html
可能还有其他例子。一个好的谷歌搜索可能是你的朋友。无论如何,我认为您不会找到完全从他们使用的套接字实现中抽象出来的完全断开连接的服务器和客户端。我以前必须自己这样做,编写一个不使用套接字但使用串行 io 到另一台设备的 html 客户端,这会将数据传递到更广泛的互联网上。
【讨论】:
【参考方案2】:问题在于,一旦您希望它进行会话管理,编写库以直接包含传输(通常是套接字)处理会简单得多,而不是尝试定义应用程序可以实现的可用接口底层运输工作。尤其是因为大多数(显然不是全部)用户无论如何都需要这两个组件。
【讨论】:
【参考方案3】:如果您想要 Web 服务器的子集,请阅读开源服务器的源代码并删除您不需要的内容。你可能想看看 lighttpd 和 nginx。它们是简单的轻量级网络服务器。
【讨论】:
这样做了,它们都是不可读/不可剥离的增长应用程序代码。如果它不是从一开始就被设计成一个库,那么它作为一个库就失败了。【参考方案4】:libsoup 似乎做了你描述的事情。 neon 已关闭。
会话/连接管理 libsoup:soup_session_sync_new()
霓虹灯:ne_session_create()
多路复用
我不确定你到底是什么意思。你介意开导我吗?
将通信细节的实际实现留给应用程序执行。
libsoup:soup_message_headers_foreach()
和 soup_message_body_flatten()
neon:没有公共 API(如果有 build_request()
公开就好了)
客户端和服务器端
libsoup:client 和 server API
霓虹灯:仅限客户端
免费(但非 GPL)
libsoup: LGPL
霓虹灯:GPL
HTTPS
libsoup:是的
霓虹灯:是的
重量轻是加分项
视情况而定
简单是一大优势。
视情况而定
【讨论】:
以上是关于C/C++ HTTP 库,只处理逻辑?的主要内容,如果未能解决你的问题,请参考以下文章
一种用于png图片处理的C/C++库lodepng的使用说明及踩坑记录
Matlab与C/C++混合编程之Matlab调用OpenCV库函数