# Verschiedene Frage zu nem Netzwerkprog



## Luma (13. Mrz 2004)

Hio,
bin ziemlich neu hier . Kann gern sein das sowas schon mal geposted worden ist, wenn ja sorry.

Also ich plane ein großes Projekt *g*.  Will das immer weiter verbesser. Es soll ein Netzwerktool sein, mit dem man kontrolliert wie lange man surft, wieviel Daten/s durchgehen, mit dem man überprüft welche Programme gerade online sind...

Ich fang jetzt mal ganz unten an. Ich hab nämlich keine Ahnung von solchem Code (soll nicht heißen ich programmier kein Java, ich mein damit das ich ein solches Programm nie programmiert habe und ich keine Ahnung vom Code eines solchen Programms habe ).

Könnt ihr mir mal folgende Befehle schreiben, mit denen man....

# anzeigt wieviel kBites/s durch die Leitung flitzen (raus und rein)
# ich die IP-Adresse des PC's anzeigen kann
# den Onlinestatus (also offline oder online)

So, das wärs auch schon . Für alle Antworten schonmal THX.

cya
KaaXe


----------



## Roar (13. Mrz 2004)

zum zweiten und dritten punkt:

```
/* 
 * Dieser codefetzen gibt die aktuelle ppp-ip adresse des pc's aus
 */
Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); // Network interfaces
   while (ifaces.hasMoreElements()) {
      NetworkInterface ni = (NetworkInterface)ifaces.nextElement();
          if(ni.getName().equals("ppp0")) { // PPP Adresse
              Enumeration addrs = ni.getInetAddresses();
                  while (addrs.hasMoreElements()) { // standartmäßig eh nur eins
                     InetAddress ia = (InetAddress)addrs.nextElement();
                     System.out.println("Hostname: "+ia.getHostName());
                     System.out.println("Hostaddress: "+ia.getHostAddress());
                   }
           }
    }
```


```
/*
* Soweit ich weiß gibt es keine funktion die überprüft ob du online bist, du kannst nur versuchen eine verbindung
* auzubauen, die dann evtl. abbricht
*/
boolean online = false;
try {
    Socket s1 = new Socket("google.com", 80);
    s1.close();
    online = true;
} catch (IOException ex) {
    ex.printStackTrace();
}

try {
    Socket s2 = new Socket("denic.de", 80);
    s2.close();
    online = true;
} catch (IOException ex) {
    ex.printStackTrace();
}

if(online)
System.out.println("Status: Online");
else
System.out.println("Status: Offline");
```

und zu deiner ersten frage:
ich denke da musst du die ports überwachen, und registrieren wenn der computer daten empfängt....
dazu solltest du erst überprüfen wenn der computer daten sendet, denn das läuft immer pber einen anderen zufällig ausgewählten port der gerade frei ist.


----------



## Illuvatar (13. Mrz 2004)

IP des PCs: 
	
	
	
	





```
InetAddress.getLocalHost().getHostAddress();
```


Internetverbindung könntest du so testen:


```
boolean imNetz = true;
try{
  InetAddress ia = InetAddress.getByName ("www.google.de");
}catch (UnknownHostException e){
  imNetz = false;
}
```


----------



## Roar (13. Mrz 2004)

hihi ein paar sekunden früher  
meine sind ausführlicher


----------



## Illuvatar (13. Mrz 2004)

:cry: Schon wieder  

Was machst du denn da bei der Frage zwei, reicht meine Lösung nicht?

Sicherlich kann man es bei mehreren Servern testen, meins war bloß als Beispiel gedacht, und ob Socket oder InetAddress müsste eigentlich egal sein, oder?
 Wir benutzen beide Google


----------



## Roar (13. Mrz 2004)

jo deine zweite möglichkeit ist besser, weil kürzer... aber man sollte es trotzdem immer mit mehreren hosts versuchen, wenn man auf nummer sicher gehen will...


----------



## Gast (16. Mrz 2005)

ich hab das mal probiert wie ihr meintet die verbindung zu testen
beim ersten start des programms wird auch der aktuelle status richtig angezeigt aber das problem ist das es nur EINMAL funktioniert => wenn sich der status hinterher ändert und ich die methode noch mal aufrufe wird kein anderer status angezeigt
kann mir jemant sagen was da falsch läuft?

try {
      tester=InetAddress.getByName("www.google.de");
      label2.setText("online");
      label2.setBackground(Color.green);
    }
    catch (java.net.UnknownHostException ex) {
      label2.setText("offline");
      label2.setBackground(Color.red);
    }

mfg
Erik


----------

