Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
TryParse IP Adresse
Rainer Wein
myCSharp.de - Member



Dabei seit:
Beiträge: 90

Themenstarter:

TryParse IP Adresse

beantworten | zitieren | melden

Hallo zusammen

ich habe auf einer Form eine MaskedTextBox in die eine IPAdresse
eingegeben wird.
Um zu prüfen ob es eine gültige IP ist, verwende ich folgenden Code:



private bool IsIP(string IP)
        {
            IPAddress ip;
            bool valid = false;
            
            if (string.IsNullOrEmpty(IP))
            {
                valid = false;
            }
            else
            {
                valid = IPAddress.TryParse(IP, out ip);
            }

            return valid;
        }

Wenn ich nun die IP: 192.168.070.078 eingebe, behauptet er das es keine korrekte IP Adresse ist. Was mache ich falsch?
private Nachricht | Beiträge des Benutzers
Lennart
myCSharp.de - Member



Dabei seit:
Beiträge: 429
Herkunft: Bawü

beantworten | zitieren | melden

Mit ein bisschen Probieren wärste da sicher drauf gekommen ...
192.168.070.078 ist keine gültige Ip, 192.168.70.78 hingegen schon.
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

IPAddress.TryParse verwendet unter anderem zur Überprüfung der Gültigkeit die Winsock Funktion inet_addr.
Dort steht auch wieso es nicht klappen kann. Er sieht die 078 als oktal an. Da aber 8 ausserhalb von oktal ist kann er diese nicht parsen.

Gruß,
Tom
private Nachricht | Beiträge des Benutzers
Rainer Wein
myCSharp.de - Member



Dabei seit:
Beiträge: 90

Themenstarter:

beantworten | zitieren | melden

Danke,

welche Möglichkeiten habe ich im Zusammenspiel zwischen einer TextMaskBox und IPAddress.TryParse(IP, out ip) um eine gültige IP abzufragen?
Ich wollte erst "0" Zeichen mit Replace ersetzen aber das führt natürlich auch zu falschen IP-Adressen (192.168.090.123->192.168.9.123).
Bleibt da nur Regex?
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

Es gibt immer mehrere Möglichkeiten für sowas.

Aber ich denke mit Regex kannst du es relativ schnell und elegant lösen, zumal es Ausdrücke zum validieren für IPs wie Sand am Meer geben sollte.

Gruß,
Tom
private Nachricht | Beiträge des Benutzers
Rainer Wein
myCSharp.de - Member



Dabei seit:
Beiträge: 90

Themenstarter:

beantworten | zitieren | melden

Validiert werden die IP Adressen ja durch die Methode
private bool IsIP(string IP).
Mir fehlt einfach eine Möglichkeit wie ich aus z.Bsp.:
090 eine 90 mache
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

ahm...

wie wärs mit 090 auf int casten?
private Nachricht | Beiträge des Benutzers
Golo Roden
myCSharp.de - Member

Avatar #avatar-2167.png


Dabei seit:
Beiträge: 4649
Herkunft: Riegel am Kaiserstuhl

beantworten | zitieren | melden

Bei all dem (Regex & Co) bitte an IPv6 denken ;-)
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de
private Nachricht | Beiträge des Benutzers
norman_timo
myCSharp.de - Member

Avatar #avatar-1775.jpeg


Dabei seit:
Beiträge: 4591
Herkunft: Wald-Michelbach (Odw)

beantworten | zitieren | melden

Hallo zusammen,

wenn es nur um die führenden Nullen geht, dann kann man auch "String.TrimStart('0')" verwenden.

Grüße
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
private Nachricht | Beiträge des Benutzers
Rainer Wein
myCSharp.de - Member



Dabei seit:
Beiträge: 90

Themenstarter:

beantworten | zitieren | melden

Auf die Idee mit den casten bin ich dann auch gekommen, war halt schon ein bissl spät gestern Abend. :)

Meine IP-Adressen werden nun nach der Eingabe in die MaskedTextBox
richtig behandelt. z.B. "192.###.001.10" wird zu "192.0.1.10"
Wenn ich die korrigierte/validiert IP Adresse der
MaskedTextBox zuweisen will ( Mask: 099,099,099,099 )
rückt er die Adresse nach links ein -> 192.011.0##.###

Weiß da jemand Rat?
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

Musst die Oktetts wohl wieder 3stellig machen.
private Nachricht | Beiträge des Benutzers
Rainer Wein
myCSharp.de - Member



Dabei seit:
Beiträge: 90

Themenstarter:

beantworten | zitieren | melden

Hmm, die Lösung wollte ich eigentlich umgehen.
Ich hätte es gern das es wie in der Netzwerkverwaltung in WindowsXp funktioniert,
da werden auch die unnötigen 0 entfernt.
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

Ja selbst ist der Programmierer.

Es gibt auch schon vorgefertigte Controls:
http://www.codeproject.com/KB/miscctrl/IpAddrCtrlLib.aspx
oder wenn es etwas kosten darf:
http://www.visualhint.com/index.php/fieldpackeditor/

Gruß,
Tom
private Nachricht | Beiträge des Benutzers