私はAndroid開発者であり、多くの場合、アプリケーションにはサーバー側のコードが必要です。通常、WebアプリにはRuby on Railsを使用し、開発中にローカルマシン(Mac OS X)でWEBrickを使用してサーバーを実行します。オフィスに着く朝、私はコンソールでifconfigを実行して、その日ラップトップに与えられたIPを確認します。問題のWebアプリにリクエストを送信するときに、AndroidアプリでそのIPを使用します。
私がオフィスにいるとき、これはすべてうまくいきます。
家に帰ると、同じことをしようとし、ifconfigを介してラップトップのIPを見つけ、アプリの構成ファイルに設定しますが、宛先が見つかりません。ハードルのセットからアプリを除外するために、携帯電話のブラウザーからWebサーバーIP(例:http : //192.168.1.4 : 3000)にアクセスしようとしましたが、接続できません。Webサーバーを実行しているラップトップから試した場合、正常に動作します。同じネットワーク上の別のマシンから試しても、接続できません。
これを考えると、私はそれを私のホームネットワークのある種の構成に絞り込んだと思いますが、私は率直に言って原因が何であるか分かりません。自宅には特別なものはありません。基本的なVerizon FiOSルーター/モデムはすべてWi-Fi経由で接続されています(仕事中の電話とラップトップの両方のWi-Fi、fyi)。Verizonルーターのファイアウォールを無効にし、ポート転送を有効にしようとしましたが、ポート3000でできることはほとんど何も変わっていません。
親愛なるサーバー障害の天才、貧しい開発者を助けてください。:)
編集:
追加するフォローアップ項目もあります。Macのファイアウォールはアクティブではなく、すべての着信要求は許可されます。また、携帯電話とラップトップで同じネットワーク(192.168.1.4 Mac、192.168.1.9電話)にあることを確認しました。私は持っていない何これが動作しない理由を考えて。
編集2:
システム環境設定に入り、Web共有を有効にして、電話からWebサイトを表示しようとしましたが、接続できませんでした。したがって、これはWEBrickやRailsに関連するものではありません。マシンのファイアウォールがオフになっており、ルーターのファイアウォールがオフになっています。
編集3:
いくつかの進歩。私はラップトップへのポート3000のポート転送を設定し、外部IPを見つけて、それを使用し、正常に接続しました。ですから、私の内部ネットワークには、正しくセットアップされていないものが間違いなくあります。
iptables
Macにあるのか、何にあるのかわかりません)。tcpdump
特定の:3000ポートでリッスンして、何かが起こっているかどうかを確認することもできます。