web-dev-qa-db-ja.com

java.net.ConnectException:/192.168.253.3への接続に失敗しました(ポート2468):接続に失敗しました:ECONNREFUSED(接続は拒否されました)

WiFiを使用してPCと携帯電話の間でデータを転送したい。

これは私がWiFi IPアドレスを取得する方法です:

String ip  = String.format(
                    "%d.%d.%d.%d",
                    (wifiInfo.getIpAddress() & 0xff),
                    (wifiInfo.getIpAddress() >> 8 & 0xff),
                    (wifiInfo.getIpAddress() >> 16 & 0xff),
                    (wifiInfo.getIpAddress() >> 24 & 0xff));

new Recive().execute(ip);

これは、PCへのメッセージ送信に関するコードです。

Socket socket = null;
String message = "test\r\n";
protected Void doInBackground(String... urls) {
    try {
        Log.i("ip", urls[0]);
        socket = new Socket(urls[0], 2468);
        toserver = new DataOutputStream(socket.getOutputStream());
        toserver.writeBytes(message);

        toserver.flush();
        toserver.close();
        socket.close();
        return null;
    } catch (Exception e) {
        Log.i("e", e.toString());
        return null;
    }
}

しかし、エラーが発生し、

Java.net.ConnectException:/192.168.253.3への接続に失敗しました(ポート2468):接続に失敗しました:ECONNREFUSED(接続は拒否されました)

また、Android電話を使用してアプリを実行します。

23
Entel

connect failed: ECONNREFUSED (Connection refused)は、ほとんどの場合、そのポートとそのIPアドレスでリッスンしていないことを意味します。考えられる説明は次のとおりです。

  • サービスがクラッシュしたか、開始されなかった(正常に!)
  • クライアントが間違ったIPアドレスまたはポートを使用して接続しようとしています。
  • クライアントが、間違ったIPに解決されるDNS名を使用して接続しようとしている、または
  • サーバーへのアクセスは、サーバー/サービスに代わって「拒否」しているファイアウォールによってブロックされています。これはかなりありそうもないであり、通常の慣行(最近)では、ファイアウォールがすべての不要な接続試行を「ブラックホール化」することを想定しています。

urlsという配列変数がありますが、実際のURLを含めることはできません。任意の形式の実際のURLを取るSocketコンストラクターのオーバーロードはありません。実際、次のような文字列形式のURLを指定した場合:

 new Socket("http://example.com", 42)

結果は別の例外になります。同様に、ルーティングできないネットワーク上のIPアドレス(「別のWiFiネットワーク」など)に接続しようとすると、別の例外が発生します。例えば「ホストが見つかりません」、「ホストへのルートがありません」、または「ネットワークへのルートがありません」。

15
Stephen C

開発マシンの仮想デバイスで実行するAndroidアプリの開発中によくある間違いは、仮想デバイスが開発マシンと同じホストではないことを忘れることです。開発マシンでは、開発マシンではなく仮想デバイス上のサーバーエンドポイントを検索するため、「 http:// localhost / ...」URLを使用できません。

5
Farrukh Najmi

なぜこれが起こったのか:

  1. サーバーは応答を送信できませんでした。指定されたIPおよびポートでバックエンドが適切に動作していることを確認してください。
  2. SSL接続がブロックされています:SSL証明書をインポートしてこれを修正します
  3. Cookieが送信されていません
  4. リクエストタイムアウト:リクエストタイムアウトの変更
5
Jaydev

また、パブリックIPやローカルホストのデフォルトIP 127.0.0.1などの複数のIPをWindowsおよびデフォルトゲートウェイで試しましたが、同じ応答がありました。しかし、私はチェックするのを忘れます

C:> ipconfig

ipconfigは、Wifiアダプターに接続されたように接続したアダプターの実際のIPアドレスが何であるかを明確に言うと、私のIPアドレスには次のように表示されます。

Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::69fa:9475:431e:fad7%11
   IPv4 Address. . . . . . . . . . . : 192.168.15.92

これがあなたのお役に立てば幸いです。

0
Osama Saeed

まず、「localhost:port」形式を使用してこのエラーが発生しました。次に、アドレスを「ip:port」形式に変更し、問題を解決しました。

0
user5091911