C# Que signifie ces quelques lignes de codes ?

Inscrit
4 Aout 2016
Messages
166
Reactions
0
#1
Yo,

Je suis un petit tuto, sur les sockets, d'habitude je comprend tout, mais là, le mec explique vraiment mal et y'a un petit truc que je ne comprend pas..:|

C#:
byte[] bufferSize = new byte[4];
                        socketAccept.Receive(bufferSize, 0, bufferSize.Length, 0);
                        int size = BitConverter.ToInt32(bufferSize, 0);

                        while (size > 0)
                        {
                            byte[] buffer;
                            if (size < socketAccept.ReceiveBufferSize)
                            {
                                buffer = new byte[size];
                            }
                            else { buffer = new byte[socketAccept.ReceiveBufferSize]; }
                        }
Donc, ce que j'ai compris :
- On reçois des octects que l'on met dans bufferSize
- On crée un int Size qui est égal aux octects de bufferSize, mais en int
- Tant que Size est plus grand que 0 :
- On check si (attention c'est là que je ne comprend plus) le socket que l'on a reçus en int est plus petit que le socket qu'on à reçus en octect

Quoi !? O_O, la je comprend pas..
 
Inscrit
25 Février 2012
Messages
178
Reactions
3
#2
- Tu crées un tableau de bytes d'une longueur fixe (4)
- T'appelles la méthode Receive du Socket en remplissant le tableau bufferSize
- Tu crées un int size qui convertit le tableau de byte bufferSize en int grâce à BitConverter
- Une boucle size > 0

Là on commence à check le size calculé (avec le tableau bufferSize) et le vrai size (ReceiveBufferSize) pour ensuite créer un autre tableau de byte d'une longueur fixe égale à la longueur vrai du packet (si je ne dis pas de la merde)
 
Inscrit
4 Aout 2016
Messages
166
Reactions
0
#3
Alors pourquoi pas faire
C#:
byte[] vraiSize;
socketAccept.Recive(vraiSize, 0, vraiSize, 0);
?
 
Inscrit
25 Février 2012
Messages
178
Reactions
3
#4
Faut avoir tout le code pour tout comprendre là ^^
Sinon, si je me trompe pas, le vrai size est encodé dans 4 bytes d'où la premiére lecture. Mais je peux vraiment pas assumer encore plus vu que je ne suis même pas sûr si ça à relation avec D2 ou un autre jeu (car ça dépend du protocole utilisé et la manière d'envoie/récéption)
 
Inscrit
4 Aout 2016
Messages
166
Reactions
0
#5
Après mûre réflexion, ça permet, (avec 2 - 3 autres lignes de code) de connaître la taille de l'info qui vas être reçus, pour savoir si il seras complet ou bien découpé en plusieurs sockets
 
Inscrit
18 Février 2015
Messages
228
Reactions
7
#6
Ce que le type voulais dire c'est que quand tu reçois les bytes via ton Receive tu dois les stocker dans un tableau de bytes qui est assez grand on va die 4096 cellules ta méthode de receptions va les mettre dans ce tableau car tu ne connait pas la vrai taille des octets envoyé et une fois que tu aura reçu les byte tu chope la taille réelle du message et tu crée un nouveau tableau de byte avec cette taille reelle et tu transfere les octets dans le nouveau tableau ;)
 
Haut Bas