c - SOCK_STREAM 上的 Http 服务器 - 何时结束连接?

标签 c linux sockets http cgi

我目前正在 linux 上编写一个服务器 http,它应该服务于 GET 和 POST 查询。我的问题是:
- 我应该什么时候关闭与某个客户端的连接?发送响应后立即?还是我应该等待套接字以获取另一个查询服务?
- 如何实现 POST 查询,以便服务器尽可能保持最通用?我应该使用 CGI 吗?如果是 - 如何?

我希望我足够具体, 谢谢!

最佳答案

在实时 HTTP 实现中(我说的是 HTTP GET), header 中曾经有一个部分表示持久连接。您也可以在 HTTP 规范中找到它。如果 persistence 设置为 true,服务器将不会关闭连接直到超时。这是为了在客户端可能需要与当前查询相关/相关的另一个资源的情况下加快浏览速度。例如,您可能请求一个网页,而该网页可能包含对图像或其他资源的引用。

您可以在处理 PUT/POST 请求后立即关闭连接。

我希望此链接 ( https://en.wikipedia.org/wiki/HTTP_persistent_connection) 能让您对此有所了解。大多数 HTTP 连接被认为是持久的(注意:短时间,比如直到超时)以避免如上所述的延迟,除非它是外部指定的。

关于c - SOCK_STREAM 上的 Http 服务器 - 何时结束连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461869/

相关文章:

C理论中关于指针的查询及防止误用

android - 使用 Android NDK 演示 printf 或 __android_log_print 漏洞

linux - cmake set_target_properties INCLUDE_DIRECTORIES 在 linux 上被忽略

c++ - close() 之后的线程中的 epoll_wait()

java - 程序在 Java 中初始化对象输入流时暂停

C预处理器: what is the motivation behind not macro-expanding arguments of#error directive?

cosf(M_PI_2) 不返回零

linux - 在内核模式下捕获数据总线错误异常

java - 为什么我的服务器 PrintWriter.println() 无法通过套接字发送消息?

java - 线程 "main"java.net.ConnectException : Connection refused: connect Socket Programming Java 中的异常