Socket etc - keine Exception

  • Themenstarter Themenstarter isa3
  • Beginndatum Beginndatum
I

isa3

Will mit folgendem Code eine Connection zu google.de aufbauen. Das Program funktioniert bei meiner Eclipse und als jar auf meinem Win7 so wie es soll. Wenn die Connection unterbrochen, wird eine Exception geworfen. Wenn ich die jar auf einem Win2003 oder Win Vista ausführe, kann ich sogar den LAN-Stecker ziehen und bekomme trotzdem keine Exception.:


Code:
                        URL url=null;
                                try{
                                        url=new URL("http://www.google.de");
                                }catch(MalformedURLException e){
                                    System.err.println("01");
                                }
                        try {
                                URLConnection con=url.openConnection();
                                con.setConnectTimeout(250);
                        }catch(IOException e){
                            System.err.println("03");
                        }
                       
                        InetAddress inetAddress=null;
                        try{
                                inetAddress=InetAddress.getByName(url.getHost());
                        }catch(UnknownHostException e){
                            System.err.println("04");
                        }
                    SocketAddress socketAddress=new InetSocketAddress(inetAddress,80));       

                   
                    Socket clientSocket=new Socket();
                    try{
                            clientSocket.connect(socketAddress,250);
                        }catch(SocketTimeoutException stoe){
                            System.err.println("05");
                        }catch(IOException ioe){
                            System.err.println("06");
                        }
                        if(clientSocket!=null){
                                if(!clientSocket.isConnected()){
                                    System.err.println("07");
                                }
                                try{
                                        clientSocket.close();
                                }catch(IOException e){}
                        }else{
                            System.err.println("08");
                        }
 
ne, wird nicht geworfen.

obwohl ich ja ein timeout gesetzt habe

clientSocket.connect(socketAddress,250);

schnallt die app auf der Vista-Maschine nach Unterbrechung des LAN erst immer nach ca 20 Sekunden, dass keine Verbindung besteht. Sehr komisch.
 
Das scheint zusammenzuhängen in der Beziehung zwischen den Windows Plattformen und der JVM. Anscheinend macht die JVM auf verschiedenen Plattformen unterschiedliche Refresh-Zyklen. Wie kann man das beeinflussen?
 
Das scheint ggf. auch mit der Geschwindigkeit der Hardware zusammenzuhängen.

Wenn ein XP auf schneller Hardware läuft, wird nach Unterbrechung sofort als Exception rückgemeldet. XP auf (bisschen) 'langsamerer' Hardware braucht bis zu 40 Sekunden, um eine Exception zu werfen. Bis dahin tut die Applikation so, als bestünde die Connection z.B. zu http://www.google.de.

Ist da ein Cache, der nicht oft genug von der JVM refresht wird? Wird das bei der Installation der JVM gesetzt und kann man das nachträglich wieder ändern, in einer .ini oder den System.properties oder was anderem?
 
Zurück