September 07, 2010     | Register
  
31

Pub

 

 

Introduction à la programmation réseau en C#

Je vous propose ici du code pour vous initier à la programmation réseau en ce basant sur une couche intermédiaire, c.à.d les sockets et TCP.Pour créer une maquette client serveur TCP, il suffit de créer deux exécutables séparés en se basant sur les codes suivants.

 

Code côté client :

using System;
using System.Collections.Generic;
using System.Text;
// namespaces nécessaires pour de la programmation sur socket
using System.Net;
using System.Net.Sockets;


namespace emetteur
{
    class Program
    {
     static void Main(string[] args)
        {
            Console.WriteLine("Start EMETTEUR");
            // Création du socket
            Socket mySocket;
            string strMessage = "Hello World";
            // Dans ce cas on a une adresse en string et on l'a converti en IPAddress.
            string strMyIpAddress = "127.0.0.1";
            IPAddress myIP = IPAddress.Parse(strMyIpAddress);
            // Constructeur du socket
            mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // On essaie de se connecter au serveur....
             while (!mySocket.Connected)
                {
                    try
                    {
                        mySocket.Connect(myIP, 40000);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
             try
                {
                    // envoie du message
                    // On convertit le message en byte
                    Byte[] Message = Encoding.ASCII.GetBytes(strMessage);
                    int iBytesSent = mySocket.Send(Message);
                    // affichage du résultat de l'envoi.
                    Console.WriteLine("Envoie du message. {0} bytes ont été envoyés.", iBytesSent);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error {0}", ex.Message);
                }
            // Fin du programme
            Console.WriteLine("end");
        }
    }
}

Code côté serveur :

using System;
using System.Collections.Generic;
using System.Text;
// Namespaces nécessaires pour de la programmation réseau
using System.Net;
using System.Net.Sockets;


namespace serveur
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Start SEERVER");
            // Création du socket
            Socket mySocket; // initialisation de l'objet Socket
            // Constructeur du socket       
            mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // Bind du socket sur l'IP Locale et le port 40000
            mySocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 40000));
            // On écoute le socket
            mySocket.Listen(255);
            // On crée un second socket client qui récupère le contenu reçu par le premier
            Socket client = mySocket.Accept();
            try
                {
                    // reçoit le message
                    Byte[] Message = new Byte[1024];
                    // On récupère le nb de bytes reçus ainsi que les paquets
                    int iResult = client.Receive(Message);
                    string strResult = "";
                    // On convertit nos bytes en ASCII
                    strResult = Encoding.ASCII.GetString(Message);
                    // affichage du résultat
                    Console.WriteLine("Réception du message du message : {0}. Le message est {1}.", iResult, strResult);
                    Console.WriteLine("fin");
                    // On ferme le socket
                    mySocket.Close();
                    mySocket = null;
                }
             catch (Exception ex)
                {
                    Console.WriteLine("Error {0}", ex.Message);
                }
            Console.WriteLine("end");
        }
    }
}

 

Lancer le serveur puis le client, et let's go & rock&roll...

Actions: E-mail | RSS comment feed |

Comments

There are currently no comments, be the first to post one.

Post Comment

Only registered users may post comments.