1

例外 java.net.UnknowHostException:http://arbitrary-hero.dyndns.org/ が発生しています。作成した Android クライアント アプリケーションを使用してアドレスに接続しようとしています。

2台のコンピューターがあり、1台はubuntu 10.10を実行しており、もう1台はWindows 7を実行しています。Windows 7コンピューターでwww.ipchicken.comにアクセスしてIPを確認すると、コマンドラインからifconfigを実行すると71.72.220.109が表示されます私のLinuxマシンは71.67.105.9です。71.72.220.109 は、71.67.105.9 という Windows 7 コンピューター上のサーバー アプリケーションに送信され、arbary-hero.dyndns.org のアドレスは、ubuntu 10.10 マシン上の Apache サーバーに送信されます。コンピューターは同じネットワークを使用して同じ家にあり、なぜこれらの異なるアドレスを持っているのかわかりません。また、両方にURLを使用させようとしています。

        String webserver = "71.67.105.9"; //does not work
        String everythingelseinthehouse = "71.72.220.109"; //works
        String weburl = "http://arbitrary-hero.dyndns.org/"; // does not work

        Socket sock = new Socket (weburl , 13267);
        //Socket sock = new Socket (address_everythingelse , 13267);
        //Socket sock = new Socket (address_room , 13267);

これは、ソケットを宣言する場所です。余分なコードについて申し訳ありませんが、これを機能させるために可能なすべての組み合わせを試しました。

この問題を解決するのに役立つコードがもっと必要な場合は、この問題を解決できることを嬉しく思います。

4

2 に答える 2

1

URLはホスト名ではありませんInetAddress.getByName("something.dyndns.org")。代わりに使用してください。

鶏に関する他のことは質問では完全に明確ではありません:)

編集0:

... Linuxマシンのコマンドラインからifconfigを実行すると、71.67.105.9が表示されます...

これは、LinuxボックスがこのIPで静的に構成されているか、ルーターが有線接続を異なる方法で処理するように設定されていることを示しています。

于 2012-07-12T19:22:39.847 に答える
1

この権限を に追加する必要がありますAndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />

InetAddressまた、 IP アドレスの代わりにドメイン名を使用するために使用する必要があります。

Socket sock = new Socket(InetAddress.getByName(weburl) , 13267);
于 2012-07-12T18:42:55.830 に答える