diff options
author | Mark Spruiell <mes@zeroc.com> | 2013-04-11 16:06:49 -0700 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2013-04-11 16:06:49 -0700 |
commit | 5b0880e399cffc38f83f7a610ef68d4c6af65b2d (patch) | |
tree | b7bd2e8a67e779ab8578ba06c30b1ae9d31a898e /java/src/IceInternal/Network.java | |
parent | Fixed (ICE-5327) - Using completed or sent as variable names causes badness (diff) | |
download | ice-5b0880e399cffc38f83f7a610ef68d4c6af65b2d.tar.bz2 ice-5b0880e399cffc38f83f7a610ef68d4c6af65b2d.tar.xz ice-5b0880e399cffc38f83f7a610ef68d4c6af65b2d.zip |
SOCKS support for Java
Diffstat (limited to 'java/src/IceInternal/Network.java')
-rw-r--r-- | java/src/IceInternal/Network.java | 77 |
1 files changed, 72 insertions, 5 deletions
diff --git a/java/src/IceInternal/Network.java b/java/src/IceInternal/Network.java index c406ef7b893..e37abd25c75 100644 --- a/java/src/IceInternal/Network.java +++ b/java/src/IceInternal/Network.java @@ -1041,6 +1041,41 @@ public final class Network } public static String + fdToString(java.nio.channels.SelectableChannel fd, NetworkProxy proxy, java.net.InetSocketAddress target) + { + if(fd == null) + { + return "<closed>"; + } + + java.net.InetAddress localAddr = null, remoteAddr = null; + int localPort = -1, remotePort = -1; + + if(fd instanceof java.nio.channels.SocketChannel) + { + java.net.Socket socket = ((java.nio.channels.SocketChannel)fd).socket(); + localAddr = socket.getLocalAddress(); + localPort = socket.getLocalPort(); + remoteAddr = socket.getInetAddress(); + remotePort = socket.getPort(); + } + else if(fd instanceof java.nio.channels.DatagramChannel) + { + java.net.DatagramSocket socket = ((java.nio.channels.DatagramChannel)fd).socket(); + localAddr = socket.getLocalAddress(); + localPort = socket.getLocalPort(); + remoteAddr = socket.getInetAddress(); + remotePort = socket.getPort(); + } + else + { + assert(false); + } + + return addressesToString(localAddr, localPort, remoteAddr, remotePort, proxy, target); + } + + public static String fdToString(java.nio.channels.SelectableChannel fd) { if(fd == null) @@ -1092,25 +1127,57 @@ public final class Network } public static String - addressesToString(java.net.InetAddress localAddr, int localPort, java.net.InetAddress remoteAddr, int remotePort) + addressesToString(java.net.InetAddress localAddr, int localPort, java.net.InetAddress remoteAddr, int remotePort, + NetworkProxy proxy, java.net.InetSocketAddress target) { StringBuilder s = new StringBuilder(128); s.append("local address = "); s.append(addrToString(localAddr, localPort)); - if(remoteAddr == null) + + if(proxy != null) { - s.append("\nremote address = <not connected>"); + if(remoteAddr == null) + { + java.net.InetSocketAddress addr = proxy.getAddress(); + remoteAddr = addr.getAddress(); + remotePort = addr.getPort(); + } + s.append("\n"); + s.append(proxy.getName()); + s.append(" proxy address = "); + s.append(addrToString(remoteAddr, remotePort)); + s.append("\nremote address = "); + s.append(addrToString(target.getAddress(), target.getPort())); } else { - s.append("\nremote address = "); - s.append(addrToString(remoteAddr, remotePort)); + if(remoteAddr == null && target != null) + { + remoteAddr = target.getAddress(); + remotePort = target.getPort(); + } + + if(remoteAddr == null) + { + s.append("\nremote address = <not connected>"); + } + else + { + s.append("\nremote address = "); + s.append(addrToString(remoteAddr, remotePort)); + } } return s.toString(); } public static String + addressesToString(java.net.InetAddress localAddr, int localPort, java.net.InetAddress remoteAddr, int remotePort) + { + return addressesToString(localAddr, localPort, remoteAddr, remotePort, null, null); + } + + public static String addrToString(java.net.InetSocketAddress addr) { StringBuilder s = new StringBuilder(128); |