我想通过 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(连接被拒绝)
此外,我使用安卓手机来运行该应用程序。
原文由 Entel 发布,翻译遵循 CC BY-SA 4.0 许可协议
A
connect failed: ECONNREFUSED (Connection refused)
很可能意味着该端口和该 IP 地址上没有任何监听。可能的解释包括:请注意,虽然您有一个名为
urls
的数组变量,但它不能包含真实的 URL。Socket
构造函数没有重载,它采用任何形式的真实 URL。事实上,如果您提供了一个字符串形式的 URL,如下所示:结果将是一个不同的例外。同样,如果您尝试连接到您无法路由到的网络上的 IP 地址(例如“不同的 WiFi 网络”),那么您将得到一个不同的异常;例如“找不到主机”、“没有到主机的路由”或“没有到网络的路由”。