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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

usercontrol avec winsock


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut usercontrol avec winsock
    Bonsoir,
    J'essaye de créer un usercontrole sous vb2010.
    Dans se usercontrole il y a entre autres un Winsock.
    Quand je lance le debuger un message d'erreur me met:

    Impossible de créer UserControl 'WindowsControlLibrary1.Nav'
    Le message d'erreur était
    'Impossible de charger le fichier ou l'assembly
    'file///D:\prog\Navdll\Navdll\obj\Debug\interop.MSWonsockLib.dll' ou une de ses dépendances.
    Tentative de chargement d'un programme de format incorrect
    Si quelqu'un sait d'ou cela vient?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Euh... WinSock est obsolète depuis pas mal de temps ! Il y a tout ce qu'il faut dans le .NET framework pour gérer les communications réseau. Va voir les namespaces System.Net et System.Net.Sockets

  3. #3
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Effectivement le winsock est "has been"
    J'utilise ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub Nav_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim receivingUdpClient As New UdpClient(900)
            Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
            Dim receiveBytes As [Byte]() = receivingUdpClient.Receive(RemoteIpEndPoint)
            Dim returnData As String = Encoding.Default.GetString(receiveBytes)
            TxtEtat.Text = returnData.ToString()
        End Sub
    Je recois bien mais qu'une seule fois. je m'explique sur le port 900 une machine m'envois des données toutes les secondes. Avec cette methode je ne recois que la premiere puis plus rien.
    Comment faire pour que mes donnees se rafraichissent.(Pas de timer)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hugoclo Voir le message
    Je recois bien mais qu'une seule fois. je m'explique sur le port 900 une machine m'envois des données toutes les secondes. Avec cette methode je ne recois que la premiere puis plus rien.
    Ben oui, l'évènement Load n'est déclenché qu'une seule fois...

    Citation Envoyé par hugoclo Voir le message
    Comment faire pour que mes donnees se rafraichissent.(Pas de timer)
    Pourquoi pas de timer ? C'est assez adéquat...

    Sinon tu peux exécuter le code dans un thread, et quand tu reçois quelque chose tu mets à jour l'interface

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
        Private Sub Nav_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim t As New Thread(AddressOf ReceiveLoop)
            t.Start()
        End Sub
     
        Private Sub ReceiveLoop()
     
            Dim receivingUdpClient As New UdpClient(900)
            Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
     
            Wile True
                Dim receiveBytes As [Byte]() = receivingUdpClient.Receive(RemoteIpEndPoint)
                Dim returnData As String = Encoding.Default.GetString(receiveBytes)
                Invoke(AddressOf UpdateText, returnData.ToString())
            End While
        End Sub
     
        Private Sub UpdateText(Dim txt As String)
            TxtEtat.Text = txt
        End Sub
    Note l'utilisation de Invoke pour exécuter UpdateText sur le thread principal (seul ce thread peut accéder aux éléments de l'interface graphique)

    L'appel à UdpClient.Receive est bloquant, donc le thread restera bloqué jusqu'à la réception d'un message. De cette façon tu n'as pas besoin d'un timer, tu reçois les données quand elles arrivent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur avec winsock
    Par Quality_Design dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/03/2006, 12h47
  2. [VB]Envoie de fichier avec winsock
    Par Xdrei dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/03/2006, 09h54
  3. Envoie de 2 variables avec winsock puis traitement
    Par Xdrei dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 18/03/2006, 10h27
  4. [2.0][C#] exposer une propriete d'1 usercontrol avec combo
    Par chnew dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/01/2006, 20h10
  5. Envoyer des pieces jointes avec winsock....
    Par YoUpIeN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/01/2005, 00h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo