HTTPリクエストを理解する必要がある単純なHTTPサーバーを作成しています。
しかし、Chromium などのブラウザは HTTP パイプライン テクノロジを利用しています。つまり、1 つの接続で複数の HTTP リクエストを送信できます。
複数の HTTP リクエストの境界を見分けるのは難しいと思います。明らかな例の 1 つは、GET リクエストとランダム データのフォーム アップロードです。
私が今考えているのは、受信したすべてのデータを で分割し、すべての\r\n
行をチェックして、HTTP リクエストのように見えるかどうかを確認することです。^(GET|PUT|HEAD|POST|MOVE|TRACE) /[^ ]+ HTTP/[0-9]+\.[0-9]+$
しかし、それはまだ間違っている可能性があります。(既存のHTTPサーバーライブラリを使えとは言わないでください…何か練習中です)