I think I might have found the issue by looking at Android source.
Correct me if I'm wrong, but it seems that the SOCKS support on Android is
limited to SOCKS version 4, with a user name hardcoded to "default". It
obviously would not work with a SOCKS5 server that allows connections
without any authentication.
Thanks!
On Wednesday, 4 September 2013 16:53:32 UTC-4, wolfier wrote:
>
> Hi,
>
> Has anyone created a SOCKS network client on Android? Namely, I'm trying
> to simply open a network connection to an HTTP server through a Dante SOCKS
> server (from Ubuntu Server 12.04.3 LTS), set up to allow connection
> without any authentication. SOCKS server is verify to work by using
> Firefox.
>
> Then, I ran the following snippet on Android and then on Desktop Java:
>
> (PROXY_ADDR and PROXY_PORT are the proxy address and port that Dante runs
> on, connected through WiFi)
>
> URL url = new URL("http://www.android.com:80/");
> Proxy proxy = new Proxy(Proxy.Type.SOCKS,
> InetSocketAddress.createUnresolved(PROXY_ADDR, PROXY_PORT));
> HttpURLConnection urlConn = (HttpURLConnection)
> url.openConnection(proxy);
> urlConn.connect();
> urlConn.getResponseCode();
>
> These 5 lines works and gives me a 200 OK when run on Java 1.6 on my
> Desktop, however the same code runs on a Galaxy Nexus (Android 4.3) results
> in Dante log showing "socks protocol error" and then Dante disconnects the
> client. This is the logcat output:
>
> 09-04 16:46:13.886 D/PROXY_TEST(28685): java.net.SocketException: recvfrom
> failed: ECONNRESET (Connection reset by peer)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:545)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.IoBridge.recvfrom(IoBridge.java:509)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.io.InputStream.read(InputStream.java:163)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.io.BufferedInputStream.read(BufferedInputStream.java:227)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.Streams.readAsciiLine(Streams.java:201)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:579)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.net.http.HttpEngine.readResponse(HttpEngine.java:827)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> com.example.ProxyTestActivity$1.javaNetTestExplicitProxy(ProxyTestActivity.java:164)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> com.example.ProxyTestActivity$1.run(ProxyTestActivity.java:185)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> java.lang.Thread.run(Thread.java:841)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): Caused by:
> libcore.io.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by
> peer)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.Posix.recvfromBytes(Native Method)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.Posix.recvfrom(Posix.java:140)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): at
> libcore.io.IoBridge.recvfrom(IoBridge.java:506)
> 09-04 16:46:13.886 D/PROXY_TEST(28685): ... 14 more
>
> Has anyone run into anything similar?
>
> Thanks in advance!
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.