c - 从套接字 C HTTP 读取

标签 c http sockets networking

我想知道如何判断是否已从套接字接收到所有数据。这是一个简单的 Web 代理,现在我正在处理请求部分,所以发送的内容应该以 '\r\n\r\n' 结束,我不知道请求将持续多长时间。我在这里读过一些帖子说我应该检查从读取函数返回的 0?但是其他人说 0 仅在客户端关闭连接时才返回?否则我可以检查缓冲区的最后一个字符,看看它们是否与上面匹配?

计划只是将读取的数据加载到缓冲区中,保存该数据,如果有更多数据重复。

谢谢

最佳答案

HTTP不是一个简单的协议(protocol),需要几个 RFC。仅仅匹配双换行/换行是行不通的。至少,您必须解析请求 header 以找出其中的编码,然后(可选)处理请求正文。

查看libcurl或任何可用的开源网络服务器来理解复杂性。

关于c - 从套接字 C HTTP 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419111/

相关文章:

清除一个小整数数组 : memset vs. for 循环

c - 预处理器条件分布在 `#include` 个文件中

http - 如何在 C# 中添加和访问自定义 header

能够进行分块传输编码的 Python Web 框架?

python - 如何同步区 block 链中的所有节点

c - 如何在 scanf 中只接受一定的精度(这么多小数位)?

c - C题中的多线程编程

http - 内容安全策略 header 和 header 大小

c++ - 关闭没有 FD_CLR 的套接字

sockets - 保存通过 TCP/IP 发送到进程的数据