Mettez en place le programme serveur, liez une adresse IP et un port avec TcpListener, lancez l’écoute sur le port et attendez les connexions TCP provenant des clients. Deux implémentations sont proposées : application console et application fenêtre WinForms.
Présentation des API principales
IPAddress: représente une adresse IP locale.IPAddress.Parse("127.0.0.1")convertit une chaîne de caractères d’adresse IP en objet.127.0.0.1: adresse de boucle locale, accessible uniquement depuis la machine hôte. Pour autoriser des connexions depuis d’autres appareils du réseau local, utilisez une IP du réseau interne comme192.168.x.x;IPAddress.Any: écoute sur toutes les adresses IP des cartes réseau de la machine.
TcpListener: classe d’écoute du serveur TCP. Paramètres du constructeur :Adresse IP + Numéro de portlistener.Start(): démarrer l’écoute. Une fois appelée, le serveur attend les connexions clientes.
Version console
using System;
using System.Net;
using System.Net.Sockets;
namespace TalkService
{
class Program
{
static void Main(string[] args)
{
// Créer l'objet IP
IPAddress ip = IPAddress.Parse("127.0.0.1");
// Créer un écouteur TCP sur le port 9500
TcpListener listener = new TcpListener(ip, 9500);
// Lancer l'écoute
listener.Start();
Console.WriteLine("Écoute démarrée… Appuyez sur E pour quitter");
ConsoleKeyInfo info;
do
{
info = Console.ReadKey();
} while (info.Key != ConsoleKey.E);
listener.Stop(); // Arrêter l'écoute à la sortie
}
}
}Langage du code : JavaScript (javascript)
Ce code lance seulement l’écoute, la méthode AcceptTcpClient n’est pas appelée pour attendre les clients, il maintient simplement le processus en vie.
Version WinForms
Composants de l’interface : (vous pouvez ajouter des contrôles sur le formulaire WinForm pour configurer l’IP, le port, le texte à envoyer, etc.)
textBoxIP: champ de saisie IP (valeur par défaut127.0.0.1)textBoxPort: champ de saisie du port (valeur par défaut9500)buttonStart: bouton DémarrertextBoxInfo: zone d’affichage des messages d’information
using System;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
namespace SocketChatServer
{
public partial class Form1 : Form
{
IPAddress ip;
TcpListener listener;
public Form1()
{
InitializeComponent();
}
private void buttonStart_Click(object sender, EventArgs e)
{
// Analyser l'IP et le port
ip = IPAddress.Parse(this.textBoxIP.Text);
int port = Convert.ToInt32(this.textBoxPort.Text);
listener = new TcpListener(ip, port);
// Démarrer l'écoute
listener.Start();
// Afficher le journal
string log = $"Serveur démarré {DateTime.Now.ToShortTimeString()}\r\n";
this.textBoxInfo.Text = log + this.textBoxInfo.Text;
}
}
}Langage du code : PHP (php)
Points à traiter
- Problème de blocage de l’interface
listener.AcceptTcpClient()est une méthode bloquante. Un appel direct depuis le thread principal de l’interface lors du clic sur le bouton gèle la fenêtre. Il faut créer un nouveau thread ou utiliserasync/awaitpour attendre les connexions de manière asynchrone. - Port déjà utilisé
Si le port 9500 est occupé par une autre application, l’instanciation denew TcpListener()déclenche une exception. Ajoutez un bloc try‑catch pendant le développement pour la gérer. - Connexion entre hôtes différents
Se lier à127.0.0.1ne permet que des tests locaux. Pour accepter des connexions depuis le réseau local, indiquez l’adresse IP locale de la machine et autorisez le port 9500 dans le pare‑feu.
Écoute de port côté serveur