2014-02-13 26 views
1

在我的Android應用程序中,我想通過PC名稱(主機名)而不是PC本地IP地址訪問wamp服務器文件,是可能?導致用戶需要更改Android應用中的本地IP地址。每次需要更新或者從mysql數據庫中獲取數據都是煩人的事情!通過PC名稱訪問wamp服務器文件的本地IP地址 - Android應用程序

// url to get all items list 
private static String url_all_items="http://Local IP Address/android_connect/test.php"; 

但我需要能夠發送PC名稱不是本地IP地址:

// url to get all items list 
private static String url_all_items="http://PC Name/android_connect/test.php"; 

其實我試圖發送的計算機名稱,而不是本地IP地址,但是,這並不工作,我嘗試了許多解決方案,在wamp服務器配置中,在Windows文件上的主機上等,但這也不行!是否有任何額外配置能夠通過android應用程序發送PC名稱而不是IP地址?雖然當我發送本地IP地址,它運作良好!

總之,有沒有什麼辦法可以使用PC名稱而不是本地IP地址訪問WAMP服務器?

任何幫助都將不勝感激。

編輯

是的,其實我想在這樣的這一解決方案,但在不同的方式,我覺得在播套接字客戶端服務器系統(Android設備,PC和WAMP服務器之間),但我真的很討厭這樣的事情(真的,我是一個很大的事情,要成爲一名程序員並且討厭這樣的事情!但不幸的是,這是事實!)但是,即使使用多播或上面的代碼,我也會得到同樣的錯誤:「android無法解析主機「pc-name」沒有與主機名關聯的地址「!這意味着它不能到達給定的pc-name,儘管它們在相同的本地網絡中。此外,當給定的主機名爲網站爲「www.google.ps」時,它運行良好,但它不在PC名稱的情況!我嘗試過,但我仍然試圖解決這樣的問題!如果我無法處理這些問題,請不要擔心,在任何情況下,解決方案都會發現或採取其他策略!感謝您的幫助和您的考慮!我非常感謝... @Mahdi

+0

您可以編輯您的虛擬主機以爲其添加規則,但這意味着硬編碼該計算機名稱。你想讓它變得動態嗎? –

+0

是的,我需要讓用戶輸入PC名稱而不是PC本地IP地址?! –

回答

1

解決您的問題的簡單方法是不在wamp服務器或窗口中進行任何配置,但解決方案在於代碼本身。正如我所看到的,您不希望Android應用用戶放置或使用IP,您只允許用戶輸入服務器名稱。因此,最好的辦法是獲取輸入的服務器名稱的IP地址。在獲得服務器名稱的IP地址後,您可以使用返回的IP重建所需的URL。以下代碼顯示了一段可幫助您實現的代碼。

private static String url_all_items="http://%s/android_connect/test.php"; 
private static void ResolveURL() { 

    try { 
      InetAddress addr = InetAddress.getByName("mahdi-pc"); 
      String host = addr.getHostAddress(); 

      url_all_items=String.format(url_all_items, host); 
      System.out.println(url_all_items); 

    } catch (UnknownHostException ex) { 

    } 

} 

使用上面的代碼,很顯然,在這種情況下,服務器名稱被命名爲「邁赫迪-PC」和返回的IP地址將是它。請注意,此代碼僅對本地網絡地址有效。之後,使用字符串格式在url_all_items鏈接中替換返回的IP地址。一旦鏈接格式正確,您就可以使用IP地址建立連接,而無需使用URL中的服務器名稱。

我希望這個解決方案能夠很好地與您合作。

+0

看到我的反應,請在編輯(在我的q)因爲它太長,我不能在評論中包含它:$ ... –

相關問題