Adresse IP Valide?

Signaler
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Bonjour,

Je voulai savoir s'il existai une class permettant de verifier si une ip contenu dans une string etait valide. en renvoyant un bool ou un int?

merci

18 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Oui les expression regulières.

using System.Text.RegularExpressions;


public static Regex regex = new Regex(
@"(?<First>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Second>2[0-4]\d|25"
+ @"[0-5]|[01]?\d\d?)\.(?<Third>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?"
+ @"<Fourth>2[0-4]\d|25[0-5]|[01]?\d\d?)",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);

::|The S@ib|::
MVP C#.NET
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

Merci je vais essayer.
Messages postés
60
Date d'inscription
vendredi 16 juillet 2004
Statut
Membre
Dernière intervention
14 janvier 2009

il faut utilisé le RegEx, pour savoir si elle correspond bien au format: 000.000.000.000
désolé je suis débutant, alors je ne sais pas exactement.mais j'essai d'aidé.
j'ai trouvé un truc sur le site:
http://www.csharpfr.com/infomsg/SAISIE-ADRESSE-IP-DANS-TEXTBOX_221106.aspx
@+

The Takahashi Keisuke
Messages postés
60
Date d'inscription
vendredi 16 juillet 2004
Statut
Membre
Dernière intervention
14 janvier 2009

sorry j'avais pas vu que quelqu'un avais répondu, j'été entrain d'écrire.
j'mescuse.

The Takahashi Keisuke
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

ok pour la definition, mais comment je m'en sert?
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

ok trouvé, je vais essayer avec isMatch (string)
Si ca marche je valide la reponse.
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

J'ai une erreur lorsque j'execute le new regex.
ArgumentOutOfRangeException
.........
Ca vient d'ou?

PS : Je le lance sur un pocket pc
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Ca vient très probablement d'ailleurs dans le code.

Cette fonction marche très bien.

::|The S@ib|::
MVP C#.NET
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

T'as d'autre idées?

Pour info, j'essaye de savoir si dans un string j'ai une ip ou un nom d'hote pour faire un dns.resolve si c'est un nom d'hote.
Dns.Resolve ne fonctionne pas avec une ip dans le string dans mon pocket pc. erreur renvoyé (hote inconnu)....
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Je viens de re tester ce code il marche.

MOntre comment tu l'utilises.

::|The S@ib|::
MVP C#.NET
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

je te donne tout le code du fichier
J'espere que ca te va.

C'est un copier coller de visual

public
class Client


{



public
static Socket socket =
null;



//public static string IPAdresse = "192.168.1.10";



public
static
string strHoteName;



public
static
int iPort;


// public static string strNameIPHote = "xtreme";



private IPEndPoint endPoint =
null;



private IPAddress ipServer =
null;


// public static int port = 80;



public
static Regex regex;



private
static
bool iResolveErreur;



public Client()


{


InitializeClient();


Connect();


}



public
static
void Net_Client_Main()


{



new Client();


}



public
static
int NetSend (
string msg)


{


Client UneInstanceClass =
new Client ();


UneInstanceClass.SendMessage (msg);



//Thread.Sleep (30000);


UneInstanceClass.SendMessage ("*Alive*");



//UneInstanceClass.Client_Closing ();



return 1;


}



private
void InitializeClient()


{



string IPAdress="test";


IPAddress ipServer;



try


{


regex =
new Regex(


@"(?<First>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?<Second>2[0-4]\d|25"


+ @"[0-5]|[01]?\d\d?)\.(?<Third>2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?"


+ @"<Fourth>2[0-4]\d|25[0-5]|[01]?\d\d?)",


RegexOptions.IgnoreCase


| RegexOptions.CultureInvariant


| RegexOptions.IgnorePatternWhitespace


| RegexOptions.Compiled


);


}



catch (ArgumentException e)


{


MessageBox.Show (e.Message);


}


iResolveErreur =
false;



if (regex.IsMatch (strHoteName))
// test si strHoteName contient une adresse ip


{


IPAdress = strHoteName;


}



else


{



try


{


IPHostEntry hostInfo = Dns.Resolve(strHoteName);



// ipServer = hostInfo.AddressList[0];


IPAdress = hostInfo.AddressList[0].ToString();


}



catch (SocketException e)


{


MessageBox.Show (e.Message);


iResolveErreur =
true;


}


}



if (!iResolveErreur)


{


ipServer = IPAddress.Parse(IPAdress);
// Changer l'adresse du serveur


endPoint =
new IPEndPoint(ipServer, iPort);


socket =
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);


}


}



private
void Connect()


{



if (!iResolveErreur)


{



try


{


socket.Connect(endPoint);



//MessageBox.Show("Connexion au serveur OK");


}



catch(Exception e)


{


MessageBox.Show(e.Message);


}


}


}



public
void SendMessage(
string msg)


{



try


{



byte[] temp = System.Text.Encoding.UTF8.GetBytes(msg);


socket.Send(temp, SocketFlags.None);


}



catch(Exception e)


{


MessageBox.Show(e.ToString());


}


}



public
static
void NetSendMessage(
string msg)


{



try


{



byte[] temp = System.Text.Encoding.UTF8.GetBytes(msg);


socket.Send(temp, SocketFlags.None);


}



catch(Exception e)


{


MessageBox.Show(e.ToString());


}


}



public
static
void Client_Closing()


{



if(socket !=
null && socket.Connected)


{


socket.Close();


}


socket =
null;


}


}
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

Petite precision, ton code fonctionne tres bien sur pc, mais ne fonctionne pas sur pocket pc....
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
ESsaye cette expression là :

([01]?\d\d?|2[0-4]\d|25[0-5])

::|The S@ib|::
MVP C#.NET
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

Tu pourrai me donner la definition complete stp. Je pige rien dans la definition.
Merci

Ps : desolée pour le temps d'attente. guost oblige cause plantage aleatoire...
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
public static Regex regex = new Regex(
@"([01]?\d\d?|2[0-4]\d|25[0-5])
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);

::|The S@ib|::
MVP C#.NET
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

meme erreur.....
Messages postés
61
Date d'inscription
samedi 23 juillet 2005
Statut
Membre
Dernière intervention
18 mars 2019

tant pis t'embete pas plus, je me suis debrouillé autrement

Merci pour tout ;)
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Tu peux utiliser ce sample :
http://msdn2.microsoft.com/fr-fr/library/ka7h9fze(vs.80).aspx

::|The S@ib|::
MVP C#.NET