Avatar billede dennism Nybegynder
17. juni 2007 - 18:03 Der er 11 kommentarer og
1 løsning

Java: ping og mail?

Jeg har to java-spørgsmål:

1) Hvordan kan jeg I et program ping'e en IP-adresse for at tjekke om den er tilgængelig?
2) Hvordan kan jeg udsende en mail fra Java?
Avatar billede arne_v Ekspert
17. juni 2007 - 18:44 #1
Avatar billede arne_v Ekspert
17. juni 2007 - 18:48 #2
Java har mig bekendt ikke ICMP support og man kan derfor ikke lave en ping i Java.

Du kan enten kalde noget C kode via JNI eller du kan køre en ekstern ping utility og
læse output fra den.
Avatar billede dennism Nybegynder
17. juni 2007 - 19:11 #3
Kan du beskrive nærmere, hvordan jeg laver en ekstern ping utility?
Avatar billede arne_v Ekspert
17. juni 2007 - 19:14 #4
Du laver ikke en - du bruger en eksisterende.

Process p = Runtime.getRuntime().exec(new String[] { "ping", "www.google.com" });
InputSteram is = p.getInputStream();

eller noget i den stil.
Avatar billede dennism Nybegynder
17. juni 2007 - 20:00 #5
Jeg har lavet denne lille klasse, som forsøger at udnytte exec:

package ping;

import java.io.InputStream;

public class PingHost {
   
    boolean access = false;
    String host = null;
   
    public PingHost(String host) {
        this.host=host;
        try {
            Process p = Runtime.getRuntime().exec(new String[] { "ping", host });
            InputStream is = p.getInputStream();
            if (is.read()!=-1) access=true;
        } catch (Exception ex) {
           
        }
    }
   
    public void printStatus() {
        if (access) {
            System.out.println("Værten "+host+" blev fundet");
        } else {
            System.out.println("Værten "+host+" blev ikke fundet");
        }
    }
   
    public static void main(String[] args) {
        new PingHost("http://www.google.com").printStatus();
        new PingHost("www.google.com").printStatus();
        new PingHost("www.eksperten.dk").printStatus();
        new PingHost("www.demaweb.dk").printStatus();       
    }
   
}

Som du kan se, så opstår der fejl under kørslen når vi når ned til demaweb.dk. Hvordan kan det være?
Avatar billede arne_v Ekspert
17. juni 2007 - 20:11 #6
prøv lige:

            Process p = Runtime.getRuntime().exec(new String[] { "ping", host });
            InputStream is = p.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String line;
            while((line = br.readLine()) != null) {
                System.out.println(line);
            }

for nogle ideer til et bedre test end
  if (is.read()!=-1) access=true;
Avatar billede dennism Nybegynder
18. juni 2007 - 11:34 #7
Har du en ide til, hvordan jeg kan analysere dette output?
Avatar billede arne_v Ekspert
18. juni 2007 - 21:26 #8
if(line.contains("nogetskidt")) access = false;
if(line.contains("nogetgodt")) access = true;

maaske
Avatar billede dennism Nybegynder
24. juni 2007 - 12:26 #9
Smider du lige et svar? :) Tak for hjælpen.
Avatar billede arne_v Ekspert
24. juni 2007 - 16:42 #10
svar
Avatar billede simonvalter Praktikant
26. juni 2007 - 23:12 #11
siden java 1.5:
http://java.sun.com/j2se/1.5.0/docs/api/java/net/InetAddress.html#isReachable(java.net.NetworkInterface, int, int)
Avatar billede arne_v Ekspert
27. juni 2007 - 13:24 #12
der var vist en lille ting jeg har misset ....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester