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

Windows Forms Discussion :

Problème Serveur UDP


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut Problème Serveur UDP
    Voilà dans le but de mon projet en BTS informatique j'ai du créer un serveur et un client. Le client doit envoyer un message au serveur qui doit lui afficher ce message.
    Le protocole utilisé est l'UDP
    Le client fonctionne, il a été validé avec Ethereal, on voit bien que la trame part du PC mais le serveur n'affiche pas le message.

    Voilà le code :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Imports System
    Imports System.Net
    Imports System.Text
    Imports System.ComponentModel
    Imports System.Threading
     
    Public Class Form1
     
        '---------- BackGroundWorker
        'Nous allons ensuite déclarer notre BackGroundWorker, un Delegate qui nous permettra d'appeller notre fonction Increment à l'intérieur du Thread et un Event que nous lèverons à la fin du Thread.
        Private WithEvents bgwCompte As BackgroundWorker
        Private Delegate Function dIncrement(ByVal nbr As Integer) As Integer
        Private Event bgwTermine(ByVal nbr As Integer)
     
        '---------- Définition du serveur 
        Dim udpClient As New Sockets.UdpClient
     
     
        '---------- Définition pour la Transmission d'un message
        Dim buffer(256) As Byte
        Dim data As String
        Dim fluxDonnées As System.Net.Sockets.NetworkStream
        Dim nbreOctets As Integer
     
        '---------- Definitions pour gestion des erreurs
        Dim msg As String = "Déconecté"
        Dim ipAdresse As IPAddress
        '-------- Définition des paramètres de la communication
     
        'Adresse Ip du serveur
        Dim srtAdresesIP As String = "10.10.33.102"
        'Definition du numéro du port
        Dim numPort As Integer = 1002
     
     
        '---------- Crée le serveur TCP
     
        Private Sub Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Connect.Click
     
     
     
     
            Try
     
                srtAdresesIP = textIP.Text
                numPort = textPort.Text
     
                'Mise au format de l'adresse IP
                Dim ipAdresse As IPAddress = IPAddress.Parse(srtAdresesIP)
     
                '----------- Traitement
     
                '------- Ecoute des demandes de connexion 
                udpClient.Connect(ipAdresse, numPort)
     
                ' IPEndPoint object will allow us to read datagrams sent from any source.
                Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
     
                'Reception de la donnée
                Dim buffer As [Byte]() = udpClient.Receive(RemoteIpEndPoint)
     
                ' Converti les valeurs ASCII en chaine de caractères
                data = Encoding.ASCII.GetString(buffer)
     
                '-------Affiche le message reçu
                TextMessage.Enabled = True
                TextMessage.Text = data
     
            Catch ex As Exception
                msg = "Erreur " & ex.Message
                LabelEtat.Text = msg
     
            End Try
     
        End Sub
     
     
     
        Private Sub Deconect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Deconect.Click
            udpClient.Close()
            fluxDonnées.Close()
            LabelEtat.Text = "Déconnecté"
            TextMessage.Text = ""
            textIP.Text = "10.10.33.102"
            textPort.Text = "1002"
            TextMessage.Enabled = False
     
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            textIP.Text = srtAdresesIP
            textPort.Text = numPort.ToString()
            LabelEtat.Text = msg
            Me.FormBorderStyle = FormBorderStyle.FixedSingle
     
        End Sub
     
    End Class
    Savez vous d'où peut venir le problème? merci d'avance

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bon alors je précise à l'avance que je n'y connais rien du tout (enfin presque) en ce qui concerne les communications client-server (je lisais le topic pour m'instruire) mais une chose m'intrigue.

    Tu nous signales que le protocole utilisé est l'udp et dans ton code, mais p-e est-ce juste un oubli de correction car il s'agit d'un commentaire, tu indiques "Crée le serveur TCP"

    Je rappelle que je n'y connais rien ou presque mais s'il s'agit effectivement d'un serveur qui fonctionne en tcp et que tu utilises l'udp, je peux que je connais m'incite à réagir sur ce point là.

    Voilà, j'espère avoir p-e attiré ton attention sur un détail qui t'aurait échappé.

    Bon courage.

    Griftou.
    Kropernic

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut
    c'est juste un oubli car j'avais créer un serveur tcp avant et j'ai pris la meme structure

  4. #4
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    salut ,

    il faut savoir que dans le protocole UDP il y'a pas connexion

    il faut faire un THREAD qui sert a recupere les messages envoye par les # clients
    on ajoute un procedure
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    private sub receive()
    Try
     
                srtAdresesIP = textIP.Text
                numPort = textPort.Text
     
                'Mise au format de l'adresse IP
                Dim ipAdresse As IPAddress = IPAddress.Parse(srtAdresesIP)
     
                '----------- Traitement
     
                '------- Ecoute des demandes de connexion 
                udpClient.Connect(ipAdresse, numPort)
     
                ' IPEndPoint object will allow us to read datagrams sent from any source.
                Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
     
                'Reception de la donnée
                Dim buffer As [Byte]() = udpClient.Receive(RemoteIpEndPoint)
     
                ' Converti les valeurs ASCII en chaine de caractères
                data = Encoding.ASCII.GetString(buffer)
     
                '-------Affiche le message reçu
                 TextMessage.invoke(d,data)
            Catch ex As Exception
                msg = "Erreur " & ex.Message
                LabelEtat.Text = msg
     
            End Try
     
     
     
    end sub
    et modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Private Sub Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Connect.Click
     dim THREADRECEIVE as new theading.thread(adresseof receive)
    THREADRECEIVE.start() 
     End Sub
    mais attention consernant l'affichage
    comme on a utilise un autre thraed que le THRAED MAIN c'est a dire c lui de main
    il cree une delege afin de faire les mise a jour de l'interface graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TextMessage.Enabled = True
    TextMessage.Text = data
    voici le code a ajoute en votre form
    dans la zone de declaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Delegate sub miseajour(parametre As string )
    Dim D As miseajour
    et dans la methode form_load
    ajoute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D=new  miseajour(AddressOf affichage)
    et finalement ajoute
    le procedure
    affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private sub affichage(byval data as string)
    TextMessage.Enabled = True
    TextMessage.Text = data
    end sub

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/11/2012, 15h07
  2. [ServerSocket]Problème communication client-serveur udp sur linux
    Par gdecrouez dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 29/09/2006, 14h59
  3. Réponses: 1
    Dernier message: 27/10/2005, 11h14
  4. serveur udp connecte a une BD
    Par bucheman dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 31/01/2005, 19h11
  5. Problème serveur Posgresql : recuperation anciennes requêtes
    Par petitmoosse dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/12/2004, 18h57

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