diff options
Diffstat (limited to 'src/org/connectbot/transport/Telnet.java')
-rw-r--r-- | src/org/connectbot/transport/Telnet.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/org/connectbot/transport/Telnet.java b/src/org/connectbot/transport/Telnet.java index 16cbd0e..ed8fc95 100644 --- a/src/org/connectbot/transport/Telnet.java +++ b/src/org/connectbot/transport/Telnet.java @@ -20,8 +20,11 @@ package org.connectbot.transport; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketException; +import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.nio.charset.Charset; import java.util.Map; @@ -123,10 +126,24 @@ public class Telnet extends AbsTransport { return PROTOCOL; } + private static void tryAllAddresses(Socket sock, String host, int port) throws IOException { + InetAddress[] addresses = InetAddress.getAllByName(host); + for (InetAddress addr : addresses) { + try { + sock.connect(new InetSocketAddress(addr, port)); + return; + } catch (SocketTimeoutException e) { + } + } + throw new SocketTimeoutException("Could not connect; socket timed out"); + } + @Override public void connect() { try { - socket = new Socket(host.getHostname(), host.getPort()); + socket = new Socket(); + + tryAllAddresses(socket, host.getHostname(), host.getPort()); connected = true; |