Reputation: 649
I want to transfer some data between PC and a mobile phone with WiFi.
This is how I get the WiFi IP address:
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);
This is the code about sending a message to the 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;
}
}
But an error occurs,
java.net.ConnectException: failed to connect to /192.168.253.3 (port 2468): connect failed: ECONNREFUSED (Connection refused)
Besides, I use a android phone to run the app.
Upvotes: 44
Views: 181176
Reputation: 81
I see everyone is trying their best on answering this question with technical solution, this can also happen when you don't have internet connection on your device. So you can have connection but without internet, meaning you don't have mobile data or your wifi device is not having data.
Upvotes: 1
Reputation: 259
i have solve this error, look you cannot use localhost or 127.0.0.1, you have to use your ipv4 address, type ipconfig in your command prompt and copy ipv4 address and paste it in your code instead of local host.
Upvotes: 1
Reputation: 719249
A connect failed: ECONNREFUSED (Connection refused)
most likely means that there is nothing listening on that port AND that IP address. Possible explanations include:
It is also possible that you are using a local proxy server when you shouldn't be ... or vice versa. This can happen if you are using a corporate network where access to external networks is restricted or monitored. Check with your local network team and/or check that your proxy settings are correct.
Note that while you have an array variable called urls
, it cannot contain real URLs. There is no overload of the Socket
constructor that takes a real URL in any form. Indeed, if you supplied a URL in string form like this:
new Socket("http://example.com", 42)
the result would be a different exception. Likewise, if you attempt to connect to an IP address on a network that you can't route to (e.g. "a different WiFi network"), then you will get a different exception; e.g. "host not found", "no route to host" or "no route to network".
Upvotes: 27
Reputation: 123
First, I used localhost:port
format and appeared this error. Then I changed the address to ip:port
format and the problem solved.
Upvotes: 0
Reputation: 156
My problem was solved after turning Off Windows Firewall Defender in public network as I was connected with that network.
Upvotes: 0
Reputation: 1812
Why this might have happened:
Less likely:
Upvotes: 8
Reputation: 1
check the name of the database in a file where you established a connection.
Upvotes: -1
Reputation: 1
I solved the same problem, I used a network connection through a proxy server, when I selected the option not to use proxies for internal and local connections, the problem disappeared
Upvotes: 0
Reputation: 149
I was also getting the same issue I tried multiple IPs like my public IP and localhost default IP 127.0.0.1 in windows and default gateway but same response. but I forget to check by
C:> ipconfig
ipconfig cleanly say what is my actual IP address of that adapter with which I have connected like I was connected with Wifi adapter my IP address will show me as:
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
I hope this will help you.
Upvotes: 2
Reputation: 5316
A common mistake during development of an android app running on a Virtual Device on your dev machine is to forget that the virtual device is not the same host as your dev machine. So if your server is running on your dev machine you cannot use a "http://localhost/..." url as that will look for the server endpoint on the virtual device not your dev machine.
Upvotes: 16