我正在.NET 中编写一个简单的 HTTP 客户端用于学习目的。我正在使用最终使用Winsock的 .NET Socket类。我不想使用WebRequest、HttpWebRequest或HttpClient类,因为它们使用WinINet,我不想使用它们,因为我这样做是为了了解 HTTP 的工作原理。
我想知道如何确定 HTTP 响应何时完成。通过阅读 HTTP/1.1 规范(RFC 2616),我认为以下伪代码是如何确定 HTTP 响应何时完成的。
parse HTTP headers
if parse not successful:
throw error
if HTTP version is 1.1 and Transfer-encoding is chunked:
parse first line of each chunk as an ASCII hexadecimal, the chunk size
if parse not successful:
throw error
read each chunk until chunk size 0
else if Content-Length is specified:
read Content-Length number of bytes
else:
throw error
这是或多或少正确的方法吗?