Sockets are faster than web services in general.
- As you master both sides of the communication you can have your own data format, which can be much more efficient than what you're allowed to do with http
- Depending on what you're sending, you may have a very simple message structure, whereas http will always require its header for example, which adds data to transfer
- Classic http is opening and closing the communication channel for each request, which is quite inefficient
However, on this last point as you're on a slow, unstable wifi connection it is not bad to reconnect for each request.
I would recommend you to have a look to zmq, it is a library for message queues between applications with a great variety of supported topologies. There are bindings for a lot of languages, and it also works on Android. You may find it better than plain sockets + your own message protocol, or http.