views:

556

answers:

2

I want to create an application that runs on Android and uses Raw Sockets. I see there isn't any raw socket support in the java.net.* or the android.net.* libraries. Are raw sockets possible on Android?

+2  A: 

Correct, raw sockets are not supported in any Java or Android libraries, in part because (I quote from here):

it is believed that such a package would degrade the current Java security model and may be difficult to implement in a non-operating system (OS) dependent fashion.

There are 3rd party libraries like RockSaw or JSocket, however these require compiling C or C++, so you are out of luck there.

Also, I believe you need root access to use raw sockets.

So, with all that, I would say technically it's possible, but not practical at this time.

Steve
You can use the Android NDK for C/C++ code. That doesn't help with the access restriction though.
fadden
I actually need Raw Sockets. The purpose of using Raw Sockets is so the packets can be manipulated. I want to write a PPPoE layer, which would require access to the raw packets. It really needs to run at the same level as the built in VPN client. Is there a DDK like kit that lets you write at the driver level on Android?
Tingo
A: 

When you say "raw" sockets you might simply mean sockets as opposed to something like comet type hacks in a browser.

If that is the case, here is a nice tutorial for sockets in Android... Does this help you?

http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

Sid NoParrots
I need to get access to the Raw data, not just access a tcp/udp socket. Nice example though.
Tingo