なぜこれが機能するのですか:
exec 3<>/dev/tcp/www.google.com/80 echo -e "GET / HTTP/1.1\n\n">&3 猫 <&3
そして、これは失敗します:
echo -e "GET / HTTP/1.1\n\n" > /dev/tcp/www.google.com/80 猫 </dev/tcp/www.google.com/80
wget、curl、またはその他のライブラリを使用せずに1行で行う方法はありますか?
2 番目のスニペットは、2 つの個別の TCP ソケットを開くため、失敗します。はHTTP 要求にecho
接続して書き込みます。www.google.com
次に、2 行目で別の接続を開き、そのソケットからの読み取りを試みます。Google が HTTP リクエストの送信を待機しているため、2 番目のソケットは単純にブロックされます。
私の専門分野ではありませんが、2 番目のサンプルは 2 番目の接続を開き、最初のサンプルは同じ接続へのハンドルを開いたままにすると思います。したがって、1 つの接続のみを開くことを含むソリューションはすべて機能するはずです。