HTTP プロトコルでのCR.LF.
HTTPのクライアント動作をTELNETで確認する際によく出てくる
GET / HTTP1.1
というメッセージ送信ですが、行末にCR、LFを付けます。
プロトコル1.0以降?ではHost も指定しないと Bad Requestになると思うので、
Host: example.com とセットで
GET /index.html HTTP1.1CRLFHost: example.comCRLFCRLF
と最後は空行CRLFを追加します。
ここまでは何となくの習慣でそうしてました。具体的なコード上でCRは0x0d(\r)LFは0x0a(\n)なので、\r\n\r\n などと記述することになります。
で、何気なくとあるサンプルプログラムを見ていると、LFだけ書かれていました。
\r\n\r\nではないのですが、サンプルだけあってちゃんと動作します。
このあたりが曖昧だったのでRFCで見てみると面白いことが書かれてました。結論的にはどちらでも構わないようです。
RFC 7231
出展:https://triple-underscore.github.io/RFC7231-ja.html
何だか、サーバー側は色んな改行に対応しておけみたいな事がかかれてますが、今まで通り \r\nで行きたいと思いました。