使用 winsock 接收 http 请求

Receiving http requests with winsock

出于教育目的,我正在尝试用 C++ 制作一个网络 api。 Web api 需要能够侦听 http 请求(GET、POST 等),当它收到 http 请求时,它需要能够将数据发送回客户端。因为它是出于教育目的,所以我想在没有不必要的图书馆的情况下这样做。现在我需要做的第一件事是让 api 能够接收请求并对此做出响应,在对 google 进行一些研究后,我发现 winsock 可能是为 windows 但我几乎找不到关于接收 http 请求的信息。

我的问题是:winsock是否可以从浏览器接收http请求,并将数据发送回浏览器?

My question is: Is it possible with winsock to receive a http request from the browser, and send data back to the browser?

是的。 ^^

是的,因为 HTTP 是一种(通常)使用 TCP 作为底层传输协议的协议。

但即使对于经验丰富的 C++ 开发人员来说,尝试在简单的 win32 套接字之上构建真正的 HTTP 层也有点过分。

许多没有经验的 C++ 开发人员可能会将此任务视为 "well, you just need to read some data, parse the headers, assemble your own HTTP response and send it back"。

但是.. 您将不得不支持

  • TLS,所有讨厌的私有 keys/public 密钥实现
  • 重定向
  • 分块传输
  • G-Zip 传输

而且这个列表还在继续..

所以实际上,如果您只是想接受一个套接字,读取一些数据并发送一些基本的 HTTP 响应,而不是。如果您想要一个可靠、专业的 HTTP 库——可能不需要。

您可以查看此页面 https://github.com/ReneNyffenegger/cpp-webserver 以查看用于 HTTP 的简单 winsock 服务器实现。 Web 服务器的实现并不那么困难。当然你应该有时间。