【问题标题】:Implementation of HTTP in C++C++中HTTP的实现
【发布时间】:2012-01-08 02:49:15
【问题描述】:

我正在做一个需要从头开始实现 http 的项目;我必须将数据包中的文件放在一起,而不是使用像 wget 或 cURL 这样的预构建文件抓取器。是否有任何用于处理数据包的简单框架(跨平台或 unix)?任何人都有他们自己在数据包级别实现的 GET 或 PUT 方法的示例?

【问题讨论】:

  • 为什么需要从头实现它?许可问题?
  • 您正在混合不同的网络层。 HTTP没有包的概念,TCP层也没有HTTP的概念。

标签: c++ http packet


【解决方案1】:

HTTP不是在数据包级别实现的,它是在 TCP 套接字之上实现的,它将自身呈现为流。

HTTP/1.1 是由 RFC2616 定义的,尽管有很多实现技巧和陷阱在规范中并不明显。

【讨论】:

    【解决方案2】:

    关于 OSI 层的观点其他人都搁置一旁......

    您可以使用标准 C++ 进行简单的序列化,也可以使用 BOOST 库中的存档/ASIO 和类似机制。

    与其将您指向一个地方,我建议您通过堆栈溢出阅读此问题及其各种答案:

    Serialize and send a data structure using Boost?

    它很好地涵盖了您的选择,并提供了很好的资源,让您有一个快乐的基础,因此您可以根据您将要做什么做出更明智的决定。

    【讨论】:

    • HTTP 请求和响应标头是换行符分隔的 ASCII 文本。不需要序列化数据结构。所以这里有用的链接问题的部分只是在套接字和缓冲区之间读/写字节数据的部分。
    【解决方案3】:

    您应该尝试使用来自http://pocoproject.org/ 的 POCO HttpClient/HttpServer 类 HttpClient 应该支持客户端所需的 POST/GET 方法。

    【讨论】:

      猜你喜欢
      • 2013-11-17
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多