Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Socket connection refused

Tags:

I am trying to open a Socket on Android but everytime I try I keep getting connection refused error no matter what way I try.

The error happens on the following line of code where I try to create the connection.


Socket socket = new Socket(getLocalIpAddressString(), 8008);

The following is the method I use to get the local ip address:


public static String getLocalIpAddressString() {
 try {
     for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
         NetworkInterface intf = en.nextElement();
         for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
             InetAddress inetAddress = enumIpAddr.nextElement();
             if (!inetAddress.isLoopbackAddress()) {
                 return inetAddress.getHostAddress().toString();
             }
         }
     }
 } catch (SocketException ex) {
     Log.e("IPADDRESS", ex.toString());
 }
 return null;

}


And the error I get is:


WARN/System.err(3574): java.net.ConnectException: /192.168.2.163:8008 - Connection refused
WARN/System.err(3574):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:237)
WARN/System.err(3574):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:199)
WARN/System.err(3574):     at java.net.Socket.startupSocket(Socket.java:734)
WARN/System.err(3574):     at java.net.Socket.<init>(Socket.java:157)
WARN/System.err(3574):     at com.networks.phone.engine.SIPEngine.rtpTest(SIPEngine.java:1444)

I presume its an error with my Ipaddress and or port? But can anyone point me in the right direction as to what might be the cause?

like image 835
Donal Rafferty Avatar asked Mar 11 '10 14:03

Donal Rafferty


2 Answers

A properly coded android application which declares network permission in its manifest can accept connections on unpriveleged ports as there is no firewall on the device.

However, many wifi and most mobile networks will place the device behind NAT and an external firewall, so inbound connection attempts may never reach it.

like image 59
Chris Stratton Avatar answered Sep 28 '22 07:09

Chris Stratton


I have used the ipconfig command in prompt and then i used the "IPv4 Address" for connecting to current PC.

I have connected the Server successfully as well as sent & received bytes.

Android Client Side Code:

s = new Socket("192.168.42.85",12345);

PC Server Side Code:

socket = ss.accept();
InetAddress ia = socket.getInetAddress();
System.out.println("Client Address: " + ia.getHostAddress());
like image 22
Ganesh Bhosale Avatar answered Sep 28 '22 07:09

Ganesh Bhosale