概要
mindが、謎なので調べてみた。
練習問題、やってみた。
練習問題
mindで生httpリクエストを取得せよ。
サンプルコード
エラー検査とは
エラー?
ならば
エラー文字列で 重大エラー
つぎに
。
メインとは
ホスト名は 文字列
ポート番号は 変数
待ちソケットは 変数
データソケットは 変数
エラーコードは 変数
文字列1は 文字列
「localhost」を ホスト名に 入れ
40001を ポート番号に 入れ
「ホスト名 」を 表示し
ホスト名を 表示し
「 、」を 表示し
ポート番号を 数値表示し
「 番ポートで待つ。」を 一行表示する
ホスト名と ポート番号と 1個で listenし
待ちソケットに 入れ エラー検査し
「listenの後」で このメッセージでスタック検査し
「listen完。待ちソケット番号 = 」を 表示し
待ちソケットを 数値表示し 改行する
ここから
「acceptします」を 一行表示し
待ちソケットで acceptし
データソケットに 入れ
エラー?
ならば
「エラー:」を エラー出力し エラー文字列を 一行エラー出力し 打ち切り
つぎに
「accept完。データソケット番号 = 」を 表示し
データソケットを 数値表示し 改行する
ここから
「クライアントからのデータを待っています。」を 一行表示し
データソケットから ハンドル指定で一行読み出し 文字列1に 入れる
データ終り?
ならば
「[EOF]クライアントが終了しました。」を 一行表示し 打ち切り
つぎに
「データ = 」を 表示し
文字列1を 一行表示し
「HTTP/1.1 200 OK」を 文字列1に 入れ
文字列1を データソケットに ハンドル指定で一行書き込みする
繰り返し
「データソケットをクローズします」を 一行表示する
データソケットを ハンドル指定でクローズする
「待ちソケットをクローズします」を 一行表示する
待ちソケットを ハンドル指定でクローズする
打ち切り
繰り返し
「終わります。」を 一行表示する
実行結果
>nama0
ホスト名 localhost 、40001 番ポートで待つ。
listen完。待ちソケット番号 = -560
acceptします
accept完。データソケット番号 = -564
クライアントからのデータを待っています。
データ = GET / HTTP/1.1
クライアントからのデータを待っています。
データ = Host: localhost:40001
クライアントからのデータを待っています。
データ = Connection: keep-alive
クライアントからのデータを待っています。
データ = Cache-Control: max-age=0
クライアントからのデータを待っています。
データ = sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"
クライアントからのデータを待っています。
データ = sec-ch-ua-mobile: ?0
クライアントからのデータを待っています。
データ = sec-ch-ua-platform: "Windows"
クライアントからのデータを待っています。
データ = Upgrade-Insecure-Requests: 1
クライアントからのデータを待っています。
データ = User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
クライアントからのデータを待っています。
データ = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
クライアントからのデータを待っています。
データ = Sec-Fetch-Site: none
クライアントからのデータを待っています。
データ = Sec-Fetch-Mode: navigate
クライアントからのデータを待っています。
データ = Sec-Fetch-User: ?1
クライアントからのデータを待っています。
データ = Sec-Fetch-Dest: document
クライアントからのデータを待っています。
データ = Accept-Encoding: gzip, deflate, br
クライアントからのデータを待っています。
データ = Accept-Language: ja,en-US;q=0.9,en;q=0.8
クライアントからのデータを待っています。
データ = Cookie: lb:user_data=eyJlbWFpbCI6bnVsbCwiaGV4X2NvbG9yIjoiIzYwQTVGQSIsImlkIjoibXJ3M200YW9qN2l6ajdraGg1NTVtcWlvNWl0aGlhN3kiLCJuYW1lIjpudWxsfQ==
クライアントからのデータを待っています。
データ =
クライアントからのデータを待っています。
[EOF]クライアントが終了しました。
データソケットをクローズします
待ちソケットをクローズします
終わります。
以上。