学習目的で .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
これは多かれ少なかれ正しいアプローチですか?