IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 37, nombre de questions : 240, dernière mise à jour : 12 mai 2018  Ajouter une question

 

Cette FAQ a été réalisée pour répondre aux questions les plus fréquemment posées sur le forum Développement DotNET

Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle contient sont correctes. Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci.

Sur ce, je vous souhaite une bonne lecture.

SommaireRéseau (13)
précédent sommaire suivant
 

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.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Imports System.Net 
  
Function GetIPaddresses(Optional ByVal computername As String = "localhost") As String() 
  
    Dim saddr() As String 
    Dim addr() As IPAddress = Dns.Resolve(computername).AddressList() 
    Dim i As Integer 
    If addr.Length > 0 Then 
        saddr = New String(addr.Length - 1) {} 
        For i = 0 To addr.Length - 1 
            saddr(i) = addr(i).ToString 
        Next 
    End If 
  
    Return saddr 
  
End Function

Mis à jour le 30 novembre 2013 abelman

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 :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Shared Sub Main(ByVal args As String()) 
  
    Dim msg As MailMessage = New MailMessage 
  
    msg.From = "expediteur@free.f" 
    msg.To = "atoi@free.fr;alui@free.fr" 
    msg.Cc = "encoreatoi@free.fr" 
    msg.Body = "Bonjour" & Convert.ToChar(10) & "" + "Ceci est le contenu du mail" & Convert.ToChar(10) & "" + "A bientôt" 
    msg.Attachments.Add(New MailAttachment("c:\fichierjoint.txt", MailEncoding.UUEncode)) 
    SmtpMail.SmtpServer = "smtp.nerim.fr" 
    SmtpMail.Send(msg) 
  
End Sub
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ésiter 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

Mis à jour le 30 novembre 2013 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

Code vb.net : Sélectionner tout
1
2
Imports System.Net 
Imports System.IO
Le code suivant utilise une Form avec un contrôle TextBox nommé textBox1, un contrôle RichTextBox nommé richTextBox1 et un contrôle Button nommé button1.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
    Handles Button1.Click 
  
    Dim HttpWResponse As HttpWebResponse = Nothing 
    Dim sr As StreamReader = Nothing 
  
    Try 
        Dim HttpWRequest As HttpWebRequest = CType(WebRequest.Create(textBox1.Text), HttpWebRequest) 
        HttpWResponse = CType(HttpWRequest.GetResponse, HttpWebResponse) 
        sr = New StreamReader(HttpWResponse.GetResponseStream) 
        richTextBox1.Text = sr.ReadToEnd 
    Catch ex As Exception 
        MessageBox.Show(ex.Message) 
    Finally 
        If Not (HttpWResponse Is Nothing) Then 
            HttpWResponse.Close 
        End If 
        If Not (sr Is Nothing) Then 
            sr.Close 
        End If 
    End Try 
  
End Sub

Mis à jour le 30 novembre 2013 abelman

On se sert de la fonction InternetGetConnectedState de la dll win32 wininet.dll

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Runtime.InteropServices; 
  
' Déclaration de l'API 
Private Declare Function InternetGetConnectedState Lib "wininet.dll" ( _ 
    ByRef lpdwFlags As Integer, _ 
    ByVal dwReserved As Integer) As Boolean 
  
  
' Utilisation de l'API 
Public Function IsConnected() as Boolean 
        Dim Desc As Integer 
    return InternetGetConnectedState(Desc, 0) 
End Function

Mis à jour le 30 novembre 2013 abelman

Pour lister les ordinateurs d'un domaine Active Directory veuillez procéder comme suit :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Imports System.DirectoryServices 
  
Private Function GetPCList(ByVal DomainPath As String)As ArrayList 
  
    Dim PCList As Arraylist 
    Dim DomainEntry As New DirectoryEntry(DomainPath) 
    Dim Entry As DirectoryEntry 
  
    DomainEntry.Children.SchemaFilter.Add("Computer") 
    For Each entry In DomaineEntry.Children 
        ComputerList.Add(entry.Name) 
    Next 
  
    Return PCList 
  
End Function

Mis à jour le 16 novembre 2013 troxsa

Par défaut, il n'est pas possible d'exécuter une application se trouvant sur l'intranet. Voici la marche à suivre pour autoriser cette exécution :

  • Allez dans Paramètres - Panneau de configuration - Outils d'administration - Microsoft .NET Framework Configuration ;
  • Dans la fenêtre qui s'affiche, déployez l'arbre jusqu'à atteindre le nœud suivant : Poste de travail - Stratégie de sécurité du runtime - Ordinateur - Groupes de codes - All_Code - LocalIntranet_Zone ;
  • Faites un clic droit sur ce dernier noeud puis Propriétés. Dans la fenêtre qui s'affiche allez dans l'onglet Jeu d'autorisations et là passez l'autorisation de LocalIntranet à FullTrust.

Cette opération peut également se faire en ligne de commande avec l'utilitaire caspol.exe qui se trouve dans le répertoire C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 pour le framework 2.0.

Code : Sélectionner tout
caspol -q -m -ag 1.2 -zone Intranet FullTrust -n My_Zone
Cette commande va ajouter un groupe de code nommé My_Zone avec le jeu d'autorisations FullTrust sur la zone Intranet, prenant ainsi le pas sur le jeu d'autorisations LocalIntranet de la zone LocalIntranet_Zone.

Pour supprimer un groupe c'est aussi simple

Code : Sélectionner tout
caspol -q -m -rg My_Zone

Mis à jour le 31 octobre 2013 StormimOn

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Imports System.Net 
  
Function GetIPaddresses(ByVal computername As String) As String() 
    Dim saddr As String() = Nothing 
    Dim addr As IPAddress() = Dns.Resolve(computername).AddressList 
  
    If addr.Length > 0 Then 
        saddr = New String(addr.Length) {} 
        Dim i As Integer = 0 
        While i < addr.Length 
            saddr(i) = addr(i).ToString 
            i = i + 1 
        End While 
    End If 
    Return saddr 
End Function

Mis à jour le 31 octobre 2013 Merlin

La classe IPHostEntry permet de connaître la liste des adresses IP via la propriété AddressList :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
' Nom de la machine 
Dim NomMachine As String = Dns.GetHostName  
  
' Récupération de la liste des IP de la machine 
Dim InfoIps As IPHostEntry = Dns.GetHostEntry(NomMachine)  
Dim MesIp As IPAddress() = InfoIps.AddressList  
  
For Each CurrentIp As IPAddress In MesIp  
    Console.WriteLine("Ip : {0}", CurrentIp.ToString)  
Next

Mis à jour le 31 octobre 2013 Jérôme Lambert

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 :

Code vb.net : Sélectionner tout
1
2
3
4
' Pinguer un machine 
Dim monPing As Ping = New Ping  
Dim Reply As PingReply = 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.

Mis à jour le 30 novembre 2013 Jérôme Lambert

Afin que l'objet soit unique pour le client mais différent pour chaque client, vous devez définir plusieurs contraintes :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Imports System.ServiceModel 
  
<ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)> _ 
Public Class A 
    Inherits WcfInterface 
    Private i As String 
    Public ReadOnly Property I() As String 
        Get 
            Return I 
        End Get 
    End Property 
End Class 
' ... 
' ... 
Dim host As ServiceHost = New ServiceHost(monInstance) 
host.Open()

Mis à jour le 31 octobre 2013 dev01

Encore une fois c'est très simple grace au framework 2.0 :

Code vb.net : Sélectionner tout
My.Computer.Network.DownloadFile(Fichier_a_Downloader, path)
Fichier_a_downloader est le chemin complet du fichier à télécharger et path est le chemin complet du fichier à enregistrer en local.
Exemple :

Code vb.net : Sélectionner tout
My.Computer.Network.DownloadFile("http://www.zonegeeks.com/Documents/Cours/Autre/EAF_ecrit.pdf", "C:\cool.pdf")

Mis à jour le 31 octobre 2013 Aspic

Avec le framework 2.0, dans le namespace My, on trouve la méthode :

Code vb.net : Sélectionner tout
My.Computer.Network.UploadFile(path, Destination, "", "")
Et oui c'est tout bête mais encore faut-il connaitre la syntaxe de « Destination » :

path désigne le chemin complet du fichier à uploader sur le serveur et Destination doit être de la forme : « ftp://login:pass@Votre_serveur.com/Dossier/fichier_uploader.txt »

Exemple :
Avec « coucou » comme login et « 5412 » comme pass

Code vb.net : Sélectionner tout
ftp://coucou:5412@ftpperso.free.fr/temp/musique.mp3

Mis à jour le 31 octobre 2013 Aspic

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.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
' Création de la requête 
Dim objWebRequest As System.Net.WebRequest = System.Net.HttpWebRequest.Create("http://dotnet.developpez.com") 
' Envoi de la requête au serveur 
Dim objWebResponse As System.Net.WebResponse = objWebRequest.GetResponse() 
' Stream pour récupérer le résultat 
Dim objStreamReader As System.IO.StreamReader = Nothing 
  
Try 
    ' Récupération du résultat 
    objStreamReader = New System.IO.StreamReader(objWebResponse.GetResponseStream()) 
    ' Lecture du résultat 
    TextBox1.Text = objStreamReader.ReadToEnd() 
Finally 
    ' Fermeture de la connexion 
    If Not objWebResponse Is Nothing Then 
        objWebResponse.Close() 
    End If 
End Try

Mis à jour le 30 novembre 2013 Aspic Jérôme Lambert

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

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 © 2024 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.