Using ProxySelector to allow users to configure the proxy
    Jean-Christophe Collet 
    Jean-Christophe.Collet at Sun.COM
       
    Mon May  4 06:09:56 PDT 2009
    
    
  
Paulo Levi wrote:
> But it's completely unintuitive! I can't know if i need to bother the 
> user about proxy configuration before trying with no proxy, but trying 
> to use that disallows the use of any other.
>
> Trying to wrap Proxy.NO_PROXY to circumvent that, even if technically 
> possible, just makes the code fail in the next line.
>
> if (p.type() != Proxy.Type.SOCKS)
>             throw new SocketException("Unknown proxy type : " + p.type());
>
> I'm doing this because it's the natural way to create the behavior i 
> want, only bugging the user for the proxy if needed.
> If you have another idea that doesn't involve bogus requests to 
> google.com <http://google.com> or other "know assumed forever" sites 
> i'd like to hear it.
The most likely way to tell that you're behind a firewall is to catch 
NoRouteToHostException which is thrown when trying to connect to an 
address that can't be reached. As it is hinted in its javadoc: 
http://java.sun.com/javase/6/docs/api/java/net/NoRouteToHostException.html
However, firewalls vary in nature, so there is no unique way to detect 
them. For instance in some cases you won't even be able to resolve the 
URL hostname because the internal DNS won't resolve external addresses.
There is a reason web browsers don't auto-detect you're behind a 
firewall....
Your best bet, I think, is to attempt a direct connection while catching 
both NoRouteToHostException and UnknownHostException. If either of these 
happen, assuming you're certain of your host name, chances are you are 
behind a firewall.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jean-christophe_collet.vcf
Type: text/x-vcard
Size: 246 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/net-dev/attachments/20090504/c3e3eff0/jean-christophe_collet.vcf 
    
    
More information about the net-dev
mailing list