Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

FAQ C++/CLI et VC++.NetConsultez toutes les FAQ

Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013 

 
OuvrirSommaireIntéraction du C++/CLI avec le framework .NetRéseau

Avec les expressions régulières.
On utilise le namespace System::Text::RegularExpressions.

 
Sélectionnez

bool CheckIpAddr(String ^ipAddress)
{
	String ^ re = "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$";
	return System::Text::RegularExpressions::Regex::IsMatch(ipAddress, re);
}
				

Version sans expression régulière.
On se sert de la fonction Split de la classe String pour parser la chaine, puis on analyse les différentes sous-chaînes.

 
Sélectionnez

bool CheckIpAddrNoRegex( String ^ipAddress )
{
	if ( ipAddress == nullptr || ipAddress == "" )
		return false;
	array<String^> ^ ipPartList = ipAddress->Split('.');
	if ( ipPartList->Length != 4 )
		return false;
	try
	{
		unsigned char ipPartNumber = Convert::ToByte(ipPartList[0]);
		ipPartNumber = Convert::ToByte(ipPartList[1]);
		ipPartNumber = Convert::ToByte(ipPartList[2]);
		ipPartNumber = Convert::ToByte(ipPartList[3]);
	}
	catch ( Exception ^) { return false; }
	return true;
}				
				
Créé le 9 mai 2006  par nico-pyright(c), abelman, Louis Guillaume Morand

Pour obtenir les adresses IP d'un ordinateur on utilise la fonction Resolve de la Classe System::Net::Dns.
Voici une petite fonction qui le fait :

 
Sélectionnez

array<String ^> ^ GetIPaddresses(String ^computername)
{
	array<String ^> ^ saddr;
	array<IPAddress ^> ^ addr = Dns::GetHostEntry(computername)->AddressList;
 
	if (addr->Length > 0)
	{
		saddr = gcnew array<String^>(addr->Length);
		for (int i = 0; i < addr->Length; i++)
			saddr[i] = addr[i]->ToString();
	}
	return saddr;
}
				
Créé le 9 mai 2006  par nico-pyright(c), abelman, freegreg

On utilise les classes HttpWebRequest, HttpWebResponse qui encapsulent la communication socket du protocole HTTP. On utilise ensuite la classe StreamReader pour lire le flux de la réponse.

 
Sélectionnez

HttpWebResponse ^HttpWResponse;
StreamReader ^sr;
try
{
	HttpWebRequest ^ HttpWRequest = safe_cast<HttpWebRequest ^>(WebRequest::Create("http://www.developpez.com"));
	HttpWRequest->CachePolicy = gcnew Cache::HttpRequestCachePolicy(Cache::HttpRequestCacheLevel::Reload);
	HttpWResponse = safe_cast<HttpWebResponse^>(HttpWRequest->GetResponse());
	sr = gcnew StreamReader(HttpWResponse->GetResponseStream());
	richTextBox1->Text= sr->ReadToEnd();
}
catch (Exception ^ex)
{
	Console::WriteLine(ex->Message);                
}
finally
{
	if (HttpWResponse != nullptr)
		HttpWResponse->Close();
	if (sr != nullptr)
		sr->Close();
}				
				

Remarque : on utilise ici la propriété Reload du namespace Cache pour ne pas se servir du cache.

Créé le 9 mai 2006  par nico-pyright(c), abelman, Louis Guillaume Morand

Avec la version 2 du Framework, la classe Ping est apparue permettant de faire la même chose que la commande ping utilisée sous Dos :

 
Sélectionnez

	// Pinguer un machine
	Ping ^monPing = gcnew Ping();
	PingReply ^Reply = monPing->Send("192.168.0.1");
	Console::WriteLine("Statut du ping : {0}", Reply->Status);
      
Créé le 27 mars 2007  par Jérôme Lambert

Lien : Voir l'article de Webman
Lien : System.Net.NetworkInformation.Ping

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.