Android, Bad Socket Exception (SOCKS) - PullRequest
0 голосов
/ 14 октября 2010

Я попытался подключиться к серверу через сервер SOCKS в клиентском приложении Android (Android OS 1.5 и 1.6) с кодом ниже:

    Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(Constants.SOCKS_PROXY_HOST, Constants.SOCKS_PROXY_PORT));
    socket = new Socket(proxy);
    InetSocketAddress dest = new InetSocketAddress(targetHost,targetPort);
    socket.connect(dest);

Однако в последней строке было выдано исключение:

W/System.err(  507): java.net.SocketException: SOCKS connection failed: java.net.SocketException: Bad socket
W/System.err(  507):    at org.apache.harmony.luni.net.PlainSocketImpl.socksConnect(PlainSocketImpl.java:389)
W/System.err(  507):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:224)
W/System.err(  507):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:521)
W/System.err(  507):    at java.net.Socket.connect(Socket.java:1019)
W/System.err(  507):    at java.net.Socket.connect(Socket.java:960)

У кого-нибудь может быть идея, где я ошибся?Заранее спасибо.

1 Ответ

0 голосов
/ 15 октября 2010

Прошло некоторое время, но, наконец, нашли решение. Кажется, что есть небольшая проблема с реализацией SOCKS в java.net на нескольких устройствах Android, даже когда оба телефона имеют одинаковую версию ОС Android (протестировано на нескольких телефонах с разными сборками). В любом случае, я должен использовать другую альтернативную библиотеку socks в моем проекте: JSocks (http://jsocks.sourceforge.net/)

И до сих пор это работает как брелок на нескольких устройствах, которые я тестировал.

...