java.net.ConnectException:无法连接到 /192.168.253.3(端口 2468):连接失败:ECONNREFUSED(连接被拒绝)

java.net.ConnectException: failed to connect to /192.168.253.3 (port 2468): connect failed: ECONNREFUSED (Connection refused)

我想通过 WiFi 在 PC 和手机 phone 之间传输一些数据。

这是我获取 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: failed to connect to /192.168.253.3 (port 2468): connect failed: ECONNREFUSED (Connection refused)

此外,我使用 android phone 到 运行 应用程序。

A connect failed: ECONNREFUSED (Connection refused) 很可能意味着该端口和该 IP 地址上没有任何监听。可能的解释包括:

  • 服务已崩溃或尚未(成功!)启动,
  • 您的客户端正在尝试使用错误的 IP 地址或端口进行连接,
  • 您的客户端正在尝试使用解析为错误 IP 的 DNS 名称进行连接,或者
  • 服务器访问被 "refusing" 代表 server/service 的防火墙阻止。这是 非常不可能 鉴于正常做法(这些天)是防火墙 "blackhole" 所有不需要的连接尝试。

请注意,虽然您有一个名为 urls 的数组变量,但它不能包含真正的 URL。 Socket 构造函数没有任何形式的重载,它采用任何形式的真实 URL。实际上,如果您以这样的字符串形式提供 URL:

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

结果将是不同的异常。 同样,如果您尝试连接到您无法路由到的网络上的 IP 地址(例如 "a different WiFi network"),那么您将得到一个不同的异常;例如"host not found"、"no route to host" 或 "no route to network"。

为什么会这样:

  1. 服务器无法发送响应:确保后端在提到的 IP 和端口上正常工作。
  2. SSL 连接被阻止:通过导入 SSL 证书解决此问题

不太可能:

  1. 未发送 Cookie
  2. 请求超时:更改请求超时

在您的开发机器上的虚拟设备上开发 android 应用程序 运行 期间的一个常见错误是忘记虚拟设备与您的开发机器不是同一主机。因此,如果您的服务器在您的开发机器上是 运行,则您不能使用“http://localhost/...”url,因为它会在虚拟设备而不是您的开发机器上查找服务器端点。

我也遇到了同样的问题,我尝试了多个 IP,比如我的 public IP 和 windows 中的本地主机默认 IP 127.0.0.1 和默认网关,但响应相同。 但我忘了通过

检查
C:> ipconfig

ipconfig 清楚地说明我所连接的那个适配器的实际 IP 地址是什么,就像我连接 Wifi 适配器一样,我的 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

希望对您有所帮助。

首先,我使用了localhost:port格式,出现了这个错误。然后我把地址改成ip:port格式,问题就解决了

您可以将域转换为 IP 地址 因为每个域都有特定的 IP 地址,那么您将解决该问题。 我希望这能帮到您。

我解决了同样的问题,我通过代理服务器使用网络连接,当我选择不使用代理进行内部和本地连接时,问题消失了

检查您建立连接的文件中的数据库名称。

在 public 网络中关闭 Windows Firewall Defender 后我的问题得到解决,因为我已连接到该网络。

我有同样的错误,因为我的设备连接在与计算机不同的网络中