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?
A raw socket is used to receive raw packets. This means packets received at the Ethernet layer will directly pass to the raw socket. Stating it precisely, a raw socket bypasses the normal TCP/IP processing and sends the packets to the specific user application (see Figure 1).
A socket is an endpoint for communication between two machines. The actual work of the socket is performed by an instance of the SocketImpl class. An application, by changing the socket factory that creates the socket implementation, can configure itself to create sockets appropriate to the local firewall.
This class implements client sockets (also called just "sockets"). A socket is an endpoint for communication between two machines.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With