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

Framework .NET Discussion :

[c#] Socket UDP - gestion


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [c#] Socket UDP - gestion
    Bonsoir à tous,

    j'ai un soucis de compréhension concernant l'utilisation des socket UDP. J'tutilise d'ordinaire les socket TCP de cette façon :

    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
    #region Run
            public void Run()
            {
                while (true)
                {
                    try
                    {
                        List<Socket> Read = new List<Socket>();
                        List<Socket> Write = new List<Socket>();
                        Read.Add(this.Socket);
                        for (Int32 i = 0; i < this.Clients.Count; i++)
                        {
                            Read.Add(this.Clients.ElementAt(i).Key);
                            if (!this.Clients.ElementAt(i).Value.IsEmpty())
                                Write.Add(this.Clients.ElementAt(i).Key);
                        }
                        Socket.Select(Read, Write, null, 5);
                        for (Int32 i = 0; i < Read.Count; i++)
                        {
                            if (Read[i] == this.Socket)
                                this.Accept();
                            else
                                this.Read(this.Clients[Read[i]]);
                        }
                        for (Int32 i = 0; i < Write.Count; i++)
                            this.Write(this.Clients[Write[i]]);
                        this.ClearDisconnectedClients();
                    }
                    catch (Exception E)
                    {
                        Log.Instance.Write("SERVER", "0.0.0.0", "void Run()", E.Message, System.Diagnostics.LogType.Fault);
                    }
                }
            }
    Mon but est de faire la même chose en UDP, à savoir que plusieurs clients puissent envoyer des paquets à un client UDP.

    Pour le moment je fais comme ceci :
    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
    try
                {
                    this.Socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                    IPEndPoint Server = new IPEndPoint(IPAddress.Any, 30000);
                    this.Socket.Bind(Server);
                    Int32 Length = 0;
                    Byte[] Buffer = new byte[1024];
                    while (true)
                    {
                        IPEndPoint Clients = new IPEndPoint(IPAddress.Any, 0);
                        EndPoint Sender = (EndPoint)Clients;
                        Length = this.Socket.ReceiveFrom(Buffer, ref Sender);
                        Buffer[Length] = 0;
                        Console.WriteLine(Sender.ToString());
                        Console.WriteLine(Length);
                    }
                }
                catch (Exception Ex)
                {
                    Console.WriteLine(Ex.Message);
                }
    Le problème est que je ne sais pas comment envoyer des données et en même temps en recevoir (comme je faisais avec Socket.Select).

    Merci d'avance
    Cordialement,
    NeoKript

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut
    Bonjour NeoKript,
    je suis à la recherche d'un exemple de code du serveur tcp en c#.et voilà après recherche sur le site j'ai trouvé ta discussion donc ça serait gentil de me fournir un exemple.
    J'ai implémenté un serveur basique qui reçoit helleo worfl du client puis l'affiche mais maintenant mon client va envoyer au serveur des codes (0X1000 ,0X200 ...) et le serveur dès qu'il reçoit 0X100 il doit comprendre qu'il va éxécuter la méthode getlogin , s'il reçoit 0X200 il va exécuter getMdp.
    Mais je n'ai pas su définir tout ça
    Merci de me donner un exemple détaillé ou un lien qui explique bien tout ça

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

Discussions similaires

  1. Pb de socket udp
    Par phoenixia dans le forum MFC
    Réponses: 7
    Dernier message: 01/06/2006, 17h08
  2. [socket UDP] Codage BER : Format des Tag (TLG)
    Par Lolita59 dans le forum Réseau
    Réponses: 28
    Dernier message: 19/05/2006, 17h37
  3. Socket : UDP ou TCP
    Par lafracas dans le forum Développement
    Réponses: 2
    Dernier message: 10/04/2006, 22h43
  4. code c pour sockets (udp vers tcp et inversement)
    Par HiT dans le forum Développement
    Réponses: 11
    Dernier message: 19/11/2005, 18h03
  5. Notion sur Socket UDP
    Par oxor3 dans le forum Développement
    Réponses: 3
    Dernier message: 05/04/2004, 00h19

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