ncを使って簡易サーバっぽいものを使う

今日のFMS春期講習で、クロスオリジンなどクライアントサイドでデバッグしていることが原因で苦戦している場面を目撃しました
サーバ上では全く問題なく動くんですが、どうやればいいのか分からん…と

その時はPython3を使って

python3 -m http.server

とかやってたのですが
デフォルトで入ってるのが2系統だったり、そもそもPythonを入れるので手間取ったり…
Pythonの環境構築に凄く時間が掛かっているようでした

そこでncを使えばいいんじゃない?という話はしたのですが、実際にやってみた人がいなかったので、テキトーにやり方を紹介しておきます

Wikipediaを見ればやり方は書いてあるんですが…)
Netcat - Wikipedia

まず、OS XLinuxCygwinなどでやる場合
以下のようにすれば終わりです

while true; do( echo "HTTP/1.0 200 Ok"; echo; cat -u ファイル名) | nc -l ポート番号; done

Windowsコマンドプロンプト上などで行う場合は上記のコマンドでは動きません
whileとかをどうにかしなければいけばいので、スクリプトを書いてみました

echo off

if "%1" == "" goto ERROR
if "%2" == "" goto ERROR
if "%3" == "" goto echos
goto :EOF

:echos
echo FileName     %1
echo PortNumber   %2

:ncLoop
nc -l %2 < %1
goto ncLoop

:ERROR
echo ncHttp [FileName] [PortNumber]
echo;
goto :EOF

見れば分かると思いますが、1つ目の引数にファイル名を指定し、2つ目の引数にポート番号を指定すればいいだけです

簡単なbatファイルなのでサラーっと読めばだいたい分かるでしょう


Pythonなどで簡易サーバを建てるのは良いと思いますが、勉強会などの様々なOS、環境で、素早く目的の動作を行うにはncを利用するのも手ではないかな?と思いました