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