2

Wi-Fi が無効になっているときに、IP アドレス (例: http://222.222.222.222:8080 ) と URL (例: http://www.website.com )に接続しようとしました。Wi-Fi がなくて IP アドレスに接続しようとすると、ConnectExceptionエラーが発生することに気付きました。一方、Wi-Fi がなくて URL に接続しようとすると、IOExceptionエラーが発生します。Exception唯一の違いは最初の IP アドレスともう 1 つの URL を提供しているのに、2 つのケースで異なるものを受け取るのはなぜですか? 誰かがこれについて私を啓発できますか?これについて説明を求めています。

ありがとうございました!

4

1 に答える 1

2

さまざまなステップが失敗しているため、さまざまなエラーが発生しています。

80IP アドレスのポートに接続しようとすると、connect(2)失敗するのはシステム コールです。connect(2)失敗する理由はさまざまです。ユーザーに適切なエラー メッセージを提供するには、例外からのメッセージを調べる必要があります。

テキスト アドレスのポートに接続しようとすると80、ライブラリは最初にを使用してホスト名を IP アドレスに解決getaddrinfo(3)しようとします。名前解決は、ネットワーク アクセスがあるかどうかに基づいて失敗する場合と失敗しない場合があります。localhostたとえば、に接続しようとしている場合、ネームサービス ルックアップはローカル デバイスで完全に処理できるため、通常、ネットワーク アクセスは必要ありません。ネームサーバーに接続できないためにネームサービスの障害が発生するため、別のエラー メッセージ (および例外) を表示することは理にかなっていますは、特定の一連のテストで同じです。さまざまな理由で、ネームサーバーに接続できない場合があります。ここでも、例外からのメッセージを調べて、適切なエラー メッセージをユーザーに表示する必要があります。

于 2012-04-01T00:52:29.967 に答える