Sunday, September 16, 2012

[android-developers] Re: Concurrent 3G and WiFi : Socket creation problem

The problem has been solved.

I updated my routing table for appropriate source routing and two default gateways (for different source IP addresses)

Thanks,
GLEX

On Wednesday, 29 August 2012 13:09:29 UTC-4, glex wrote:
I am aware that concurrent usage of WiFi and 3G/4G is not supported on Android devices right now. I am working on a research project which tries to analyse the pros and cons for the same.

I used the approach used by Android WiFi tether to reload the WiFi driver and configure the routing table and appropriate interfaces. I summarized my work in the followinglink. I tested my setup using the "ping -I eth0/rmnet0 <web server>".  Till this phase everything is running smoothly. 

As a next step I tried to establish a socket connection using the two interfaces. Everything works fine as I use 3G interface, but when I try using the WiFi (eth0), socket connection is not successful. Though I can see that bind operation is successful. 

The code I used for this socket establishment is:

NetworkInterface nif = NetworkInterface.getByName("eth0");
Log.d(TAG,"Interface detected S");
Enumeration<InetAddress> nifAddresses = nif.getInetAddresses();
Log.d(TAG,"Interface IP Address Retrieved S: ");
Socket socket = new Socket();
try{
socket.bind(new InetSocketAddress(nifAddresses.nextElement(),1027));
Log.d(TAG,"Socket Bind S");
socket.connect(new InetSocketAddress(InetAddress.getByName("152.14.93.160"),80));
Log.d(TAG,"Socket Creation Success");
socket.close();
Log.d(TAG,"Socket Closed S");
} catch (Exception e1){
socket.close();
Log.d(TAG,"Socket Bind Error");
e1.printStackTrace();
}
} catch (Exception e1) {
// TODO Auto-generated catch block
Log.d(TAG,"Socket Creation Error");
e1.printStackTrace();
}


Also from the logcat the exception I see for the same is:

W/System.err(10996): java.net.SocketTimeoutException: Connection timed out
W/System.err(10996):  at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
W/System.err(10996):  at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)
W/System.err(10996):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)
W/System.err(10996):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:440)
W/System.err(10996):  at java.net.Socket.connect(Socket.java:1013)
W/System.err(10996):  at java.net.Socket.connect(Socket.java:956)
W/System.err(10996):  at com.example.pdwn.TService.onCreate(TService.java:98)
W/System.err(10996):  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2223)
W/System.err(10996):  at android.app.ActivityThread.access$2500(ActivityThread.java:132)
W/System.err(10996):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1102)
W/System.err(10996):  at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err(10996):  at android.os.Looper.loop(Looper.java:150)
W/System.err(10996):  at android.app.ActivityThread.main(ActivityThread.java:4293)
W/System.err(10996):  at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(10996):  at java.lang.reflect.Method.invoke(Method.java:507)
W/System.err(10996):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
W/System.err(10996):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
W/System.err(10996):  at dalvik.system.NativeStart.main(Native Method)

 I am not sure why, the connect function is timing out. Specially given that ping operation is successful. Any help will be greatly appreciated.

Thanks,
Arpit.

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment