Bonjour,
Je suis actuellement entrain de réaliser un serveur en C# et j'utilise donc des Sockets.
Dans mon programme, j'ai créé un Thread chargé de recevoir les données.
Ce thread récupère les données envoyées par chaque client et traite le message.
Son code :
Mon problème est le suivant :
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 foreach (Socket client in m_Clients.Values) { // Si on a reçu des données if (client.Available > 0) { byte [] buffer = new byte [client.Available]; // Réception des données client.Receive(buffer, buffer.Length, SocketFlags.None); // Transformation bytes -> string string message = new System.Text.ASCIIEncoding().GetString(buffer); // Traitement Traitement(message); } }
Imaginons que tous les clients envoient toutes les secondes le message "bonjour".
Si un traitement (fonction Traitement()) prend plus de 3 secondes pour un client, quand je vais faire le Receive pour le prochain client, je vais alors avoir le message "bonjourbonjourbonjour".
Il y a t-il un moyen d'éviter cela, et par exemple imaginer un Receive qui indique que le client a envoyé 3 messages : "bonjour" "bonjour" et "bonjour" ?
Merci !
Flo
Partager