【问题标题】:C/C++ HTTP library, that handles only the logic?C/C++ HTTP 库,只处理逻辑?
【发布时间】:2011-01-05 02:22:28
【问题描述】:

我正在寻找一个用于 C/C++ 的 HTTP 库,它只处理协议逻辑,而不是实际的传输机制。我遇到的图书馆倾向于使整个交流过程不协调,这不是我所需要的。

但是,我正在寻找的不仅仅是 HTTP 解析器。理想情况下,它还会处理诸如会话/连接管理、多路复用等之类的事情……只是它将通信细节的实际实现留给应用程序执行。我正在查看客户端和服务器端,尽管它们中的任何一个都会有所帮助。

最好我正在寻找免费的东西(尽管非 GPL)。 HTTPS 是一个优点。轻便是一个优点。简单是一大优势。

这样的吗?

【问题讨论】:

  • +1,我从来没有真正理解为什么库总是倾向于在一个整体包中完成所有事情(libxml2 有人吗?)。我也喜欢你“免费(虽然不是 GPL)”的态度。
  • 为什么不是 GPL?是否有法律/知识产权要求或只是个人喜好?
  • 因为没有人需要一个除了属性什么都不做的 XML 属性库。
  • jmucchiello,我实际上指的是通过 http/ftp 下载文件的 libxml2 功能。

标签: c++ c http logic


【解决方案1】:

我认为你会发现最好的东西是以分离的方式实现它。没有套接字实现的 HTML 服务器对世界上大多数人来说都是无用的。我会寻找分离良好的代码。这是一个非常简约的 html 服务器的示例,它似乎可以很好地分离,但不完全确定,因为我自己没有尝试过,但是您可以用自己的实现和包装器替换套接字类,然后这样做。

http://www.adp-gmbh.ch/win/misc/webserver.html

可能还有其他例子。一个好的谷歌搜索可能是你的朋友。无论如何,我认为您不会找到完全从他们使用的套接字实现中抽象出来的完全断开连接的服务器和客户端。我以前必须自己这样做,编写一个不使用套接字但使用串行 io 到另一台设备的 html 客户端,这会将数据传递到更广泛的互联网上。

【讨论】:

    【解决方案2】:

    问题在于,一旦您希望它进行会话管理,编写库以直接包含传输(通常是套接字)处理会简单得多,而不是尝试定义应用程序可以实现的可用接口底层运输工作。尤其是因为大多数(显然不是全部)用户无论如何都需要这两个组件。

    【讨论】:

      【解决方案3】:

      如果您想要 Web 服务器的子集,请阅读开源服务器的源代码并删除您不需要的内容。你可能想看看 lighttpd 和 nginx。它们是简单的轻量级网络服务器。

      【讨论】:

      • 这样做了,它们都是不可读/不可剥离的增长应用程序代码。如果它不是从一开始就被设计成一个库,那么它作为一个库就失败了。
      【解决方案4】:

      libsoup 似乎做了你描述的事情。 neon 已关闭。

      • 会话/连接管理
      • 多路复用
        • 我不确定你到底是什么意思。你介意开导我吗?
      • 将通信细节的实际实现留给应用程序执行。
      • 客户端和服务器端
        • libsoup:clientserver API
        • 霓虹灯:仅限客户端
      • 免费(但非 GPL)
        • libsoup: LGPL
        • 霓虹灯:GPL
      • HTTPS
        • libsoup:是的
        • 霓虹灯:是的
      • 重量轻是加分项
        • 视情况而定
      • 简单是一大优势。
        • 视情况而定

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 2016-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多