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...