2012-02-08 19 views
2

Androidアプリケーションに埋め込まれた小さなカスタムHTTPサーバを実行しようとしています(アプリケーションのデバッグを助けるため)。しかし、サーバーがAndroid 2.3.4の携帯電話で動作している場合、デスクトップWebブラウザからHTTPサーバーに確実に接続することはできません。私のAndroid端末で動作するHTTPサーバに接続できません

一度接続が正常に行われたため、HTTPサーバーコードが動作していることは分かっています(少なくとも基本的には)。また、コードはデスクトップ上で実行すると確実に動作します(私のアプリケーションはWindows用またはAndroid用に構築できるlibgdxベースの純粋なJavaアプリケーションです)。

android:name="android.permission.INTERNET"権限を追加する前に、PermissionDeniedフォルト(ソケットリスナーを設定するとき)にスローされたため、私はAndroidのアクセス許可が正しいです。サーバー側のコードは、独自のスレッドで実行され、つまるところ:私は(私はポート80を試してみましたが、Linuxのmust-be-root-below-port-1024「機能を」ヒット)ポート8080を使用してい

ServerSocket ss = new ServerSocket(serverPort); 
Socket clientSocket = ss.accept(); 

LogCatの出力が正常に表示されます。私のアプリは「ポート8080でリッスンしています」というメッセージだけを表示し、例外はスローされていないようです。

ネットワーク接続がうまくいるようです(電話機からインターネットにアクセスしていて、デスクトップから電話機ping)。私は3GではなくWiFiを使用しています。

+0

ブラウザからどのようなエラーが表示されますか?他のプログラムと接続できますか?テルネット?同じエラーが出ますか? –

+0

@JoachimPileborg Webブラウザは、「接続できません:Firefoxは192.168.69.113:8080のサーバーへの接続を確立できません」と表示します。同様に、 'telnet 8080 192.168.69.113'は "リモートホストに接続できません:接続が拒否されました" –

答えて

1

私はそれを見つけたと思う。私はサーバーソケットを作成した後、

ss.setReuseAddress(true); 

への呼び出しを逃していました。つまり、ソケットが「使用中」としてマークされているため、アプリケーションの再起動(一時停止/再開も)は(黙って)サーバーソケットの作成に失敗していました。 http://www.androiddevblog.net/android/a-bare-minimum-web-server-for-android-platform

:それはとても信頼できないだった理由は、私は、このブログのエントリからリンクされたコードを見つめてそれを見つけ

(仕事と十分な長さの待機の後だけに非常に最初の実行、または実行している...)説明します

関連する問題