Ich bin dabei, ein Server-Client Programm zu schreiben. Dabei ist es an einer Stelle nötig, dass der Client die IP des Servers eingibt. An dieser Stelle muss ich nun die Eingabe abfangen und auf Gültigkeit überprüfen.
Ich habe mir dafür eine eigene Klasse "ipCheck" geschrieben, die das übernehmen soll. Sie hat 2 Methoden:
public static boolean ipgueltig(String ip)
public static boolean ipzahlgueltig(String zahl)
erstere bekommt die komplette Eingabe und soll überprüfen ob es sich dabei um eine gültige IP handelt.
letztere bekommt die einzelnen Segmente der IP, also die 3er-Zahlen.
"localhost" soll ebenfalls als gültige IP zugelassen werden.
Leider haut das irgendwie überhaupt nicht hin. Die Methode ipgueltig liefert selbst bei "localhost" ein false.
Hier der Code:
Beispieleingabe: "localhost"
teste: [localhost]
results.length: 0
for-end
no ip (1) : [localhost]
da u.a. results.length und for-end ausgegeben werden, muss die methode komischerweise bei der 1. if-abfrage schon scheitern (im quelltext markiert mit // hier ####
aber warum?
abgesehen davon ist results bei der Eingabe von richtigen IPs, z.b. "192.168.0.1" leer .. hat die length 0 ??
Ich habe mir dafür eine eigene Klasse "ipCheck" geschrieben, die das übernehmen soll. Sie hat 2 Methoden:
public static boolean ipgueltig(String ip)
public static boolean ipzahlgueltig(String zahl)
erstere bekommt die komplette Eingabe und soll überprüfen ob es sich dabei um eine gültige IP handelt.
letztere bekommt die einzelnen Segmente der IP, also die 3er-Zahlen.
"localhost" soll ebenfalls als gültige IP zugelassen werden.
Leider haut das irgendwie überhaupt nicht hin. Die Methode ipgueltig liefert selbst bei "localhost" ein false.
Hier der Code:
Code:
public class ipCheck {
public ipCheck(){
}
// zahl: 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5
// stelle: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
public static boolean ipgueltig(String ip){
boolean x = false;
System.out.println("teste: ["+ip+"]");
if (ip == "localhost" ) // hier ####
{
x = true;
}
else
{
String results[] = ip.split(".");
System.out.println("results.length: "+results.length);
for (int i = 0; i < results.length; i++)
{
System.out.println("in for: ["+results[i]+"]");
}
System.out.println("for-end");
if (ip.length() == 14)
{
if ( ipzahlgueltig(ip.substring(0,2)) &&
ipzahlgueltig(ip.substring(4,6)) &&
ipzahlgueltig(ip.substring(8,10)) &&
ipzahlgueltig(ip.substring(12,14)) &&
ip.substring(3,3) == "." &&
ip.substring(7,7) == "." &&
ip.substring(11,11) == "."
)
{
x = true;
}
}
} // else
if ( x == false ) {System.out.println("no ip (1) : ["+ip+"]");}
return x;
}
public static boolean ipzahlgueltig(String zahl){
return true;
// Platzhalter!
}
}
Beispieleingabe: "localhost"
teste: [localhost]
results.length: 0
for-end
no ip (1) : [localhost]
da u.a. results.length und for-end ausgegeben werden, muss die methode komischerweise bei der 1. if-abfrage schon scheitern (im quelltext markiert mit // hier ####
aber warum?
abgesehen davon ist results bei der Eingabe von richtigen IPs, z.b. "192.168.0.1" leer .. hat die length 0 ??