1

InetAddress.getLocalHost() または InetAddress.getByName(String host) を実行しようとすると、nba.com のような既知の Web サイトであっても毎回例外がスローされるという問題があります4.1.1 GS3 と wifi とモバイル ネットワークがオンになっています。以下のコード

         try{
        InetAddress ownIP=InetAddress.getLocalHost();
        System.out.println("IP of my Android := "+ownIP.getHostAddress());
        }catch (Exception e){
            System.out.println("Exception caught ="+e.getMessage());
            String t =  e.getMessage() + "yes";
        }

以下はSystem.outです

03-12 18:59:52.636: I/System.out(18996): 例外がキャッチされました =null

前もって感謝します

4

2 に答える 2

2

基本的に私の問題が何であるかがわかったと思います.Androidのメインスレッドでネットワーク操作を実行することは許可されていないと思います.これは以前はオプションでしたが、現在はHoneycomb(API 11)に必要です.グーグル仕様。

「メインのユーザー インターフェース スレッドがブロックされないようにするために、Google は android.os パッケージの AsyncTask クラスを使用することをお勧めします。」

したがって、AsyncTask を拡張してすべてのネットワーク アプリケーションを実行する新しいクラス NetTask を作成するだけで、コードが機能するようになりました。他の誰もがそれを知っていればIDKですが、私のような初心者がまだ解決策を探している場合に備えて、これを投稿すると思いました:) !!!

ありがとう

于 2013-03-24T15:02:31.540 に答える
2

私は自分の IP を取得するためにトリッキーな方法を使用します。役立つかどうかを確認できます

String getIP() {
    try {
        Socket socket = new Socket("google.com", 80);
        return socket.getLocalAddress().getHostAddress();
    } catch (Exception e) {

    }
}
于 2013-03-13T02:34:06.900 に答える