2012-02-08 84 views
2

我試圖運行嵌入在我的Android應用程序中的小型自定義HTTP服務器(以幫助調試應用程序)。但是,當服務器在我的Android 2.3.4手機上運行時,我無法可靠地從桌面Web瀏覽器連接到HTTP服務器。無法連接到我的Android手機上運行的HTTP服務器

我知道HTTP服務器代碼的作品(至少是基礎知識),因爲有一次連接很好。代碼在我的桌面上運行時可以可靠地運行(我的應用程序是一個基於libgdx的純Java應用程序,可以爲Windows或Android構建)。

我有Android權限是正確的,因爲我在添加android:name="android.permission.INTERNET"權限之前拋出了PermissionDenied錯誤(設置套接字偵聽器時拋出)。服務器端代碼在自己的線程中運行,可以歸結爲:

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

我使用的端口8080(我試過80端口,但打了Linux的must-be-root-below-port-1024「功能」)。

LogCat輸出看起來很好。我的應用程序只是打印它的「偵聽端口8080」消息,並沒有任何例外似乎拋出。

網絡連接似乎很好(從手機瀏覽互聯網正在工作,我可以從桌面電話ping)。我使用的是WiFi,而不是3G。

+0

你從瀏覽器得到什麼錯誤?您是否可以連接其他程序,例如遠程登錄?它是否給出同樣的錯誤? – 2012-02-08 07:01:06

+0

@JoachimPileborg Web瀏覽器提供了「無法連接:Firefox無法建立與服務器的連接192.168.69.113:8080」。同樣,'telnet 8080 192.168.69.113'說:「無法連接到遠程主機:連接被拒絕」 – 2012-02-08 07:24:56

回答

1

我想我找到了。我錯過了一個電話:

ss.setReuseAddress(true); 

創建服務器套接字後。這意味着應用程序的每次重新啓動(暫停/恢復)也是(默默無聞?)無法創建服務器套接字,因爲套接字被標記爲「正在使用」了一段時間。這就解釋了爲什麼它是如此不可靠(只有第一個運行或運行足夠長的等待將工作之後......)

我發現它通過從該博客條目鏈接到代碼盯着: http://www.androiddevblog.net/android/a-bare-minimum-web-server-for-android-platform

相關問題