Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo



Comment obtenir les adresses IP d'un ordinateur ?
auteurs : abelman, freegreg
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. Pour avoir les adresses IP de l'ordinateur local il suffit de l'appeler sans paramètre.

          
		using System.Net;

        string[] GetIPaddresses(string computername)
        {
            string[] saddr = null;
            IPAddress[] addr = Dns.Resolve(computername).AddressList;

            if (addr.Length > 0)
            {
                saddr = new String[addr.Length];
                for (int i = 0; i < addr.Length; i++)
                    saddr[i] = addr[i].ToString();
            }
            return saddr;
        }

        
lien : fr System.Net.Dns (MSDN)

Comment vérifier la validité d'une adresse IP ?
auteurs : pharaonix, abelman, tomlev
Avec la méthode IPAddress.TryParse

          
		public bool CheckIpAddr(string ipAddress)
		{
      IPAddress ip;
      return System.Net.IPAddress.TryParse(ipAddress, out ip);
		}
					
        
En .NET 1.1, la méthode IPAddress.TryParse n'existe pas, mais on peut obtenir manuellement le même résultat :

          
		public bool CheckIpAddr(string ipAddress)
		{
      string[] parts = ipAddress.Split('.');
      if (parts.Length != 4)
        return false;
      foreach(string part in parts)
      {
        byte n;
        if (!byte.TryParse(part, out n))
          return false;
      }
      return true;
		}
          
        
lien : fr System.Net.IPAddress.TryParse (MSDN)

Comment envoyer un mail par SMTP ?
auteurs : abelman, neguib, tomlev
Version 1.0 et 1.1
Il faut ajouter à son projet la référence System.Web.Mail (qui aurait dû s'appeler System.Net.Mail à mon avis).
Ensuite ça se fait tout seul. Exemple:

          
        static void Main(string[] args)
        {
            // Objet mail
            MailMessage msg = new MailMessage();
            // Expéditeur (obligatoire)
            msg.From = "expediteur@free.f";
            // destinataire (il en faut au moins un)
            msg.To = "atoi@free.fr;alui@free.fr";
            // destinataires en copie (facultatif)
            msg.Cc = "encoreatoi@free.fr";
            // Texte du mail (facultatif)
            msg.Body = "Bonjour\n" +
            "Ceci est le contenu du mail\n" +
            "A bientôt";
            // Fichier joint si besoin (facultatif)
            msg.Attachments.Add(new MailAttachment(@"c:\fichierjoint.txt", MailEncoding.UUEncode));
            // Serveur SMTP
            SmtpMail.SmtpServer = "smtp.nerim.fr";
            // Envoi du mail
            SmtpMail.Send(msg);
        }

        
J'attire votre attention sur un point : les exceptions levées par la fonction SmtpMail.Send en cas d'échec, ne sont pas toujours très explicites!!
N'hésitez pas à consulter MSDN sur la classe System.Web.Mail.MailMessage. Elle dispose de nombreuses autres propriétés.
Il y a aussi l'excellent fr article de Webman

Version 2.0
A partir de .NET 2.0, les classes du namespace System.Web.Mail ont été rendues obsolètes, et remplacées par de nouvelles classes dans le namespace System.Net.Mail. Il est désormais recommandé d'utiliser ces classes à la place des anciennes. Elles s'utilisent presque de la même façon, mais offrent plus de fonctionnalités. L'envoi du message se fait à l'aide de la classe SmtpClient.
Voici un exemple :

          
        //...
        using System.Net;
        using System.Net.Mail;
        //...

        [STAThread]
        static void Main(string[] args)
        {
            // Objet mail
            MailMessage msg = new MailMessage();

            // Expéditeur (obligatoire). Notez qu'on peut spécifier le nom
            msg.From = new MailAddress("john.doe@gmail.com", "John Doe");
            
            // Destinataires (il en faut au moins un)
            msg.To.Add(new MailAddress("jack.sparrow@blackpearl.com", "Jack Sparrow"));
            msg.To.Add(new MailAddress("agent.smith@matrix.com", "Agent Smith"));

            // Destinataire(s) en copie (facultatif)
            msg.Cc.Add(new MailAddress("wonder.woman@superhero.com", "Wonder Woman"));

            // Texte du mail (facultatif)
            msg.Body = "Bonjour\n" +
            "Ceci est le contenu du mail\n" +
            "A bientôt";
            
            // Fichier joint si besoin (facultatif)
            msg.Attachments.Add(new Attachment(@"c:\fichierjoint.txt"));

            // Envoi du message SMTP
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.EnableSsl = true;
	        client.Credentials = new NetworkCredentials("john.doe@gmail.com", "mon_mot_de_passe");
            
            // Envoi du mail
            client.Send(msg);
        }

        
Notez que le code ci-dessus suppose que le serveur SMTP est sécurisé (SSL), requiert une authentification et écoute sur le port 587. Si votre serveur SMTP écoute sur le port standard (25), vous pouvez omettre le paramètre "port" du constructeur de SmtpClient. Si vous n'utilisez pas SSL, ne mettez pas EnableSsl à true. Et si le serveur ne requiert pas d'authentification, inutile de spécifier le login et mot de passe dans la propriété Credentials...

Enfin, notez qu'il est possible de spécifier les paramètres du serveur dans le fichier de configuration de l'application (web.config ou app.config) :

<configuration>
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="network">
        <network
          host="smtp.domaine.com"
          port="25"
          userName="mon_login"
          password="mon_mot_de_passe"
        />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>
De cette manière, lorsqu'on crée une instance de SmtpClient, elle est automatiquement configurée avec les paramètres du fichier de configuration.

N'hésitez pas à consulter ce tutoriel sur l'envoi et la réception d'emails en .NET 2.0.

lien : fr System.Web.Mail (MSDN)
lien : fr System.Net.Mail (MSDN)

Comment télécharger et afficher le contenu d'une page web ?
auteurs : pharaonix, abelman
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.

Namespaces à utiliser

          
	using System.Net;
	using System.IO;

        
Le code suivant utilise une Form avec un contrôle TexBox nommé textBox1, un contrôle RichTextBox nommé richTextBox1 et un contrôle Button nommé button1.

          
        private void button1_Click(object sender, System.EventArgs e)
        {
            HttpWebResponse HttpWResponse = null;
            StreamReader sr = null;
            try
            {
                HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(textBox1.Text);
                HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
                sr = new StreamReader(HttpWResponse.GetResponseStream());
                richTextBox1.Text = sr.ReadToEnd();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (HttpWResponse != null)
                    HttpWResponse.Close();
                if (sr != null)
                    sr.Close();
            }
        }

        
lien : fr HttpWebRequest (MSDN)
lien : fr HttpWebResponse
lien : fr StreamReader

Comment savoir si mon PC est connecté à internet ?
auteur : Thomas Lebrun
On se sert de la fonction InternetGetConnectedState de la dll win32 wininet.dll

          
		using System.Runtime.InteropServices;

		// Déclaration de l'API
		[DllImport("wininet.dll")]
		public extern static bool InternetGetConnectedState( out int Description, int ReservedValue ) ;

		// Utilisation de l'API
		public static bool IsConnected()
		{
			int Desc ;
			return InternetGetConnectedState( out Desc, 0 ) ;
		}

        
lien : en A propos de WinInet (MSDN)
lien : en InternetGetConnectedState (MSDN)

Comment vérifier si une machine est accessible ?
auteur : cardi
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 :

          
      // Pinguer un machine
      Ping monPing = new Ping();
      PingReply Reply = monPing.Send("192.168.1.31");

      Console.WriteLine("Statut du ping : {0}", Reply.Status);
      
        

Veillez toutefois à activer NetworkInformationPermission pour votre application, sans cela vous obtiendrez une exception de sécurité SecurityException

lien : fr Article de webman sur les nouveautés de .NET 2.0
lien : fr System.Net.NetworkInformation.Ping (MSDN)

Comment connaître la liste des adresses Ip de la machine ?
auteur : cardi
La classe IPHostEntry permet de connaître la liste de IP via la propriété AddressList :

          
      // Nom de la machine
      String NomMachine = Dns.GetHostName();

      // Récupération de la liste des IP de la machine
      IPHostEntry InfoIps = Dns.GetHostEntry(NomMachine);
      IPAddress[] MesIp = InfoIps.AddressList;

      foreach (IPAddress CurrentIp in MesIp)
          Console.WriteLine("Ip : {0}", CurrentIp.ToString());
      
        
lien : fr System.Net.Dns (MSDN)

Comment récupérer la liste des ordinateurs connectés au réseau ?
auteur : NicolasJolet

          
class Program
{
    [StructLayout(LayoutKind.Sequential)]
    public struct _SERVER_INFO_100
    {
        internal int sv100_platform_id;
        [MarshalAs(UnmanagedType.LPWStr)]
        internal string sv100_name;
    }

    [DllImport("Netapi32", SetLastError = true), SuppressUnmanagedCodeSecurityAttribute]
    public static extern int NetApiBufferFree(IntPtr pBuf);

    [DllImport("Netapi32", CharSet = CharSet.Auto, SetLastError = true), SuppressUnmanagedCodeSecurityAttribute]
    public static extern int NetServerEnum(
        string ServerNane,
        int dwLevel,
        ref IntPtr pBuf,
        int dwPrefMaxLen,
        out int dwEntriesRead,
        out int dwTotalEntries,
        int dwServerType,
        string domain,
        out int dwResumeHandle
        );

    const int LVL_100 = 100;
    const int MAX_PREFERRED_LENGTH = -1;
    const int SV_TYPE_WORKSTATION = 1;
    const int SV_TYPE_SERVER = 2;

    /// <summary>
    /// Cette fonction est tirée d'une source trouvée ici => http://www.codeproject.com/cs/internet/ListNetworkComputers.asp
    /// </summary>
    public static string[] GetComputers()
    {
        ArrayList computers = new ArrayList();
        IntPtr buffer = IntPtr.Zero, tmpBuffer = IntPtr.Zero;
        int entriesRead, totalEntries, resHandle;
        int sizeofINFO = Marshal.SizeOf(typeof(_SERVER_INFO_100));

        try
        {
            int ret = NetServerEnum(null, LVL_100, ref buffer, MAX_PREFERRED_LENGTH, out entriesRead, out totalEntries, SV_TYPE_WORKSTATION | SV_TYPE_SERVER, null, out resHandle);
            if (ret == 0)
            {
                for (int i = 0; i < totalEntries; i++)
                {
                    tmpBuffer = new IntPtr((int)buffer + (i * sizeofINFO));

                    _SERVER_INFO_100 svrInfo = (_SERVER_INFO_100)Marshal.PtrToStructure(tmpBuffer, typeof(_SERVER_INFO_100));
                    computers.Add(svrInfo.sv100_name);
                }
            }
            else
                throw new Win32Exception(ret);
        }
        finally
        {
            NetApiBufferFree(buffer);
        }

        return (string[])computers.ToArray(typeof(string));
    }

    static void Main(string[] args)
    {
        string[] computers = GetComputers();

        foreach (string computer in computers)
        {
            Console.WriteLine(computer);
        }
        Console.Read();
    }
}
      
        

Comment récupérer le contenu d'une page Web ?
auteur : cardi
Les classes WebRequest et WebResponse vous permettent respectivement de créer des requêtes HTTP et récupérer les résultats de celles-ci.

          
// Création de la requête
System.Net.WebRequest objWebRequest = System.Net.HttpWebRequest.Create("http://dotnet.developpez.com");
// Envoi de la requête au serveur
System.Net.WebResponse objWebResponse = objWebRequest.GetResponse();

// Stream pour récupérer le résultat
System.IO.StreamReader objStreamReader = null;

try
{
    // Récupération du résultat
    objStreamReader = new System.IO.StreamReader(objWebResponse.GetResponseStream());

    // Lecture du résultat
    textBox_Resultat.Text = objStreamReader.ReadToEnd();
}
catch
{ }
finally
{
    // Fermeture de la connexion
    if (objWebResponse != null)
        objWebResponse.Close(); 
}
        
lien : fr System.Net.WebRequest (MSDN)
lien : fr System.Net.WebResponse (MSDN)

Comment appeler une méthode Web sans attendre de réponse du serveur ?
auteur : Mehdi Feki
Dans certains cas, le client ne veut pas attendre une réponse du serveur après avoir appelé un service Web. L'attribut OneWay indique au serveur que le client ne veut pas recevoir d'acquittements et que sa tâche s'arrête à l'appel de la méthode Web.


          
    [SoapDocumentMethod(OneWay = true)]
    //[SoapRpcMethod(OneWay=true)]
    [WebMethod(Description = "Comment appeler une méthode Web sans attendre une réponse du serveur ?")]
    public void SaveToLog(string logEntry)
    {
        EventLog FaqLog = new EventLog("OneWayAttributeDemo");
        FaqLog.Source = "OneWayAttributeDemo";
        FaqLog.WriteEntry(logEntry, EventLogEntryType.Information);
    }

        


Consultez les autres F.A.Q's


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2010  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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com