Existe-t-il un moyen de gérer les sessions avec des sockets en C#?Socket TCP .NET avec session
Exemple de mon problème:
J'ai un serveur avec une prise écoute sur le port 5672.
TcpListener socket = new TcpListener(localAddr, 5672);
socket.Start();
Console.Write("Waiting for a connection... ");
// Perform a blocking call to accept requests.
TcpClient client = socket.AcceptTcpClient();
Console.WriteLine("Connected to client!");
et moi avons deux clients qui envoient un octet. Le client A envoie 0x1 et le client B envoie 0x2. Du côté du serveur, je lis ces données comme ceci:
Byte[] bytes = new Byte[256];
String data = null;
NetworkStream stream = client.GetStream();
while ((stream.Read(bytes, 0, bytes.Length)) != 0)
{
byte[] answer = new ...
stream.Write(answer , 0, answer.Length);
}
client A envoie 0x11. J'ai besoin d'un moyen de savoir que ce client est le même que celui qui a envoyé "0x1" auparavant.
Je n'ai pas compris comment les données ne seront pas mélangées. Après avoir lu les données envoyées par le premier client, l'objet TcpClient est détruit. Et pour lire les données suivantes je dois faire socket.AcceptTcpClient(); encore. Pouvez-vous poster un code de démo qui détecte quand le client A envoie 0x11 après sendig 0x1? Merci –
@ZeCarlos: avez-vous vraiment besoin de fermer les instances 'TcpClient'? Pourquoi ne pas les réutiliser? Chacun serait en mesure de vous obtenir un flux de données non corrompu d'exactement un client. –
Vous avez raison. Je peux réutiliser TcpClient et son flux associé. Désolé pour mon ignorance. Merci –