web-dev-qa-db-ja.com

python simpleHTTPServerはローカルマシンでのみ起動します

私は次のコマンドを実行してhttpサーバーを実行しました

python -m SimpleHTTPServer

そして、次のメッセージを取得

Serving HTTP on 0.0.0.0 port 8000 ...

しかし、ローカルWi-Fiネットワーク内の別のマシン/モバイルでアクセスできないため、ローカルマシンからアクセスしてアクセスできました。

誰かが問題を理解できるかどうかを知ってください。前もって感謝します。

2
piyushmandovra

SimpleHTTPServerはデフォルトでIPアドレス0.0.0.0にバインドします。これは、実質的に「任意のアドレス」を意味する特別なアドレスです。 localhost127.0.0.1などにバインドする場合、127.0.0.1ループバックデバイス に属するため、ローカルマシンからのみ接続できます。ただし、0.0.0.0を使用すると、サーバーはloeth0およびその他のネットワークデバイスにバインドされます。

したがって、小さなサーバーは、ネットワーク内の他のマシンから到達可能です。それは、(あなたの小さなサーバー以外の)何かがそれを禁止していることを示しているのではなく、おそらくファイアウォールです。別のマシンからのnmapでポート8000​​の状態を確認できます(nmapをインストールする必要がある場合があります)。あなたの小さなサーバーがIP 192.168.0.1で実行されているとします。他のマシンは192.168.2.101です。その後、192.168.2.101から実行します

nmap -p 8000 192.168.0.1

出力は次のようになります

PORT     STATE SERVICE
8000/tcp open  http-alt

状態が「open」の場合、ポートは到達可能であり、そこにリッスンしているものがあるため、小さなサーバーに到達できるはずです。

状態が「クローズ」の場合、ポートは到達可能ですが、そこにリッスンするものはありません。その場合、サーバーが終了したか、IPまたはポート番号を混同した可能性があります。

状態が「フィルタリング」されている場合は、小さなサーバーにアクセスできないようにする何らかの種類のIPフィルタリングファイアウォールが動作しています。

4

python -m SimpleHTTPServer 8000を指定してSimpleHTTPServerを起動すると、

次を使用して、端末でローカルネットワーク内のサーバーのIPアドレスを見つける必要があります。
linux/mac:ifconfig
windows:ipconfig

その後、モバイルデバイスでip_address:PORTに到達してください。
eg:192:168.1.5:8000

3
xilix