| 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 : System.Net.Dns (MSDN)
|
| 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 : System.Net.IPAddress.TryParse (MSDN)
|
| 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)
{
MailMessage msg = new MailMessage ();
msg. From = " expediteur@free.f " ;
msg. To = " atoi@free.fr;alui@free.fr " ;
msg. Cc = " encoreatoi@free.fr " ;
msg. Body = " Bonjour\n " +
" Ceci est le contenu du mail\n " +
" A bientôt " ;
msg. Attachments. Add (new MailAttachment (@" c:\fichierjoint.txt " , MailEncoding. UUEncode));
SmtpMail. SmtpServer = " smtp.nerim.fr " ;
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 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)
{
MailMessage msg = new MailMessage ();
msg. From = new MailAddress (" john.doe@gmail.com " , " John Doe " );
msg. To. Add (new MailAddress (" jack.sparrow@blackpearl.com " , " Jack Sparrow " ));
msg. To. Add (new MailAddress (" agent.smith@matrix.com " , " Agent Smith " ));
msg. Cc. Add (new MailAddress (" wonder.woman@superhero.com " , " Wonder Woman " ));
msg. Body = " Bonjour\n " +
" Ceci est le contenu du mail\n " +
" A bientôt " ;
msg. Attachments. Add (new Attachment (@" c:\fichierjoint.txt " ));
SmtpClient client = new SmtpClient (" smtp.gmail.com " , 587 );
client. EnableSsl = true ;
client. Credentials = new NetworkCredentials (" john.doe@gmail.com " , " mon_mot_de_passe " );
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 : System.Web.Mail (MSDN)
lien : System.Net.Mail (MSDN)
|
| 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 : HttpWebRequest (MSDN)
lien : HttpWebResponse
lien : StreamReader
|
| auteur : Thomas Lebrun |
On se sert de la fonction InternetGetConnectedState de la dll win32 wininet.dll
using System. Runtime. InteropServices;
[ DllImport (" wininet.dll " )]
public extern static bool InternetGetConnectedState ( out int Description, int ReservedValue ) ;
public static bool IsConnected ()
{
int Desc ;
return InternetGetConnectedState ( out Desc, 0 ) ;
}
|
|
lien : A propos de WinInet (MSDN)
lien : InternetGetConnectedState (MSDN)
|
| 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 :
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 : Article de webman sur les nouveautés de .NET 2.0
lien : System.Net.NetworkInformation.Ping (MSDN)
|
| auteur : cardi |
La classe IPHostEntry permet de connaître la liste de IP via la propriété AddressList :
String NomMachine = Dns. GetHostName ();
IPHostEntry InfoIps = Dns. GetHostEntry (NomMachine);
IPAddress[ ] MesIp = InfoIps. AddressList;
foreach (IPAddress CurrentIp in MesIp)
Console. WriteLine (" Ip : {0} " , CurrentIp. ToString ());
|
|
lien : System.Net.Dns (MSDN)
|
| 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 >
< / 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 ();
}
}
|
|
| 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.
System. Net. WebRequest objWebRequest = System. Net. HttpWebRequest. Create (" http://dotnet.developpez.com " );
System. Net. WebResponse objWebResponse = objWebRequest. GetResponse ();
System. IO. StreamReader objStreamReader = null ;
try
{
objStreamReader = new System. IO. StreamReader (objWebResponse. GetResponseStream ());
textBox_Resultat. Text = objStreamReader. ReadToEnd ();
}
catch
{ }
finally
{
if (objWebResponse ! = null )
objWebResponse. Close ();
}
|
|
lien : System.Net.WebRequest (MSDN)
lien : System.Net.WebResponse (MSDN)
|
| 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 )]
[ 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.
|