Blog de Grégory GHEZ

Pour chaque [ingénieur logiciel] qui affirme : "Personne ne s'embêtera à faire çà", vous trouverez un gamin en Finlande qui s'embêtera à le faire.  - Alex Mayfield

  Home :: Contact :: Syndication  :: Login
  37 Posts :: 4 Stories :: 3 Comments :: 0 Trackbacks

Article Categories

Archives

Message Categories

Liens

Ce petit tutorial va vous expliquer comment envoyer et reçevoir des données à travers un réseau par le bié du protocol UDP.

 

1. Préparation de la Socket d'écoute

Il s'agit du côté "serveur" si on puis le dire ainsi. Il faut rapeller que le protocol UDP s'utilise en mode non connecté, c'est-à-dire que le client envoi des données sans s'assurer de la présence d'un serveur pour les reçevoir.

Voici un exemple de méthode permettant de réaliser une Socket en écoute de datagrammes:

 

private void ReceiveThread() {

    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    s.Bind(new IPEndPoint(IPAddress.Any, 11000)); // On doit lier la Socket à un port d'écoute sur la machine. On choisit également de se mettre en écoute sur toutes les interfaces réseaux présentes (IPAddress.Any).

    EndPoint ep = new IPEndPoint(IPAddress.Any, 0); // Ce point de terminaison représentera les informations sur l'ordinateur émettant les datagrammes.

    byte[] buffer = new byte[1024];

    int ret = s.ReceiveFrom(buffer, ref ep); // On passe le EndPoint par référence, car celui-ci sera ré-instancié avec les informations de l'envoyeur.

    s.Close(); // On met fin à l'écoute de la Socket.

    MessageBox.Show(ep.ToString() + ": " + System.Text.Encoding.ASCII.GetString(buffer, 0, ret));

}

 

2. Envoi du datagramme sur le réseau

Pour envoyer les données (datagrammes) sur le réseau, nous créons exactement la même Socket que celle utilisée pour l'écoute. Celle-ci ne sera pas "bindée" à un port local contrairement à la précédante.

La méthode suivante présente la procédure d'envoi:

 

private void SendThread() {

    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    string message = "Salut les gurus !!";

    EndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000); // Point de terminaison pour définir la destination des datagrammes à envoyer.

    s.SendTo(System.Text.Encoding.ASCII.GetBytes(message), ep);

    s.Close();

}

 

Voilà, c'était pas bien compliqué, mais cela peut s'avérer plus pratique que le TCP lorsque les données envoyées ne sont pas soumises à un ordonnancement particulier. Pour rappel, si deux packets p1 et p2 sont envoyés successivement par le protocol UDP, il n'est pas garanti qu'ils arrivent dans le même ordre.

Source: http://blogs.labo-dotnet.com/gg00xiv/resources/TestUDP.zip

Bonne prog !

posted on mardi 7 septembre 2004 00:37

Feedback

# Gestion UDP en .NET 09/09/2004 09:59 gg00xiv's Blog


# Socket UDP en .NET 21/09/2004 11:18 gg00xiv's Blog


# re: Envoi et réception de packets UDP 16/08/2007 16:07 ringtone ripper
hi all

# re: Envoi et réception de packets UDP 16/08/2007 16:07 ringtones freeringtones
nice site!

Post Feedback

Title:
Name:
Url:
Comments: 
Enter the code you see: