begin process at 2010 03 15 08:18:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Réseau & Internet

 > 

Sockets

 > 

Tableau de byte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau de byte

jeudi 27 septembre 2007 à 15:29:05 | Tableau de byte

Overkill06

Bonjour à tous,
J'ai un tableau de byte qui m'ennuie fortement...
Je vous explique, j'envoie des données sur le réseau et j'aurai besoin d'obtenir exactement le même nombre d'octects à l'arrivée.
Jusque là, tout va bien !
MAIS pour recevoir le flux entrant, je dois créer un buffer, par défault j'ai mis 512 octects, donc lorsque je reçois des paquets inférieurs il me les complete par de 0. Et c'est bien là le problème, j'envoie le paquet à une api qui me fait une vieille erreur parcequ'il attend exactement le même nombre d'octects et pas une valeur par défaut.

Tout ça pour en venir à une question simple :
Comment faire un trim des 0 en fin des tableau de byte afin de recréer un tableau de la bonne taille.

byte[] lb_buffer = new byte[512];
 po_client.Socket.Receive(lb_buffer);
//A ce moment j'ai tableau [12,152,363,0,0,0,....]
byte[] lb_buffer_bonne_taille = la_fonction_magique_qu_il_me_manque(lb_buffer);


Un gros merci par avance.

Yohann

 

jeudi 27 septembre 2007 à 15:39:00 | Re : Tableau de byte

Nikoui

Réponse acceptée !
La fonction "Receive" ne te renvoie pas le nombre d'octets reçus ? (je ne peux pas vérifier, donc je dit peut être une bêtise...)


Working as designed
www.nikoui.fr
jeudi 27 septembre 2007 à 16:04:28 | Re : Tableau de byte

Overkill06

Merci de ta réponse, effectivement la fonction retourne bien la taille, aprés il suffit de créer un tableau de la bonne taille et d'y insérer les données.

....
li_size = po_client.Socket.Receive(lb_buffer2);
byte[] lb_buffer3 = resize_byte_arrey(li_size, lb_buffer2);
....

        private byte[] resize_byte_arrey(int pi_size,byte[] lb_array_byte)
        {
            byte[] lb_data = new byte[pi_size];
            for (int i = 0; i < pi_size; i++)
            {
                lb_data[i] = lb_array_byte[i];
            }
            return lb_data;
        }

jeudi 27 septembre 2007 à 16:29:17 | Re : Tableau de byte

sebmafate

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
ouch... que c'est moche

li_size = po_client.Socket.Receive(lb_buffer2);
byte[] lb_buffer3 = resize_byte_arrey(li_size, lb_buffer2);
....

        private byte[] resize_byte_arrey(int pi_size,byte[] lb_array_byte)
        {
            byte[] lb_data = new byte[pi_size];

            Array.Copy(lb_array_byte, lb_data, pi_size);

            for (int i = 0; i < pi_size; i++)
            {
                lb_data[i] = lb_array_byte[i];
            }
            return lb_data;
        }



Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
jeudi 27 septembre 2007 à 16:35:30 | Re : Tableau de byte

Overkill06

Merci Sebmafate, c'est encore mieux.

 

jeudi 27 septembre 2007 à 16:36:25 | Re : Tableau de byte

Nikoui

Réponse acceptée !
Et tant qu'à faire :

resize_byte_arrey -> ResizeByteArray

:)


Working as designed
www.nikoui.fr
jeudi 27 septembre 2007 à 16:44:21 | Re : Tableau de byte

sebmafate

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
allez... une p'tite dernière si t'es en .net 2.0

Array.Resize<byte>(ref lb_buffer3, li_size);




Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
jeudi 27 septembre 2007 à 16:52:21 | Re : Tableau de byte

Overkill06

Parfait et surtout : un grand MERCI !

 



Cette discussion est classée dans : buffer, tableau, byte, lb, octects


Répondre à ce message

Sujets en rapport avec ce message

TELECHARGER UN DOCUMENT STOCKE DS UNE BDD [ par epilog ] Bonjour,j'ai un document stocké ds une base de données SQL Server dans une colonne de type IMAGE et je souhaite ouvrir ce document après l'avoir récup tableau de byte [ par nuns ] Bonjour je voudrais savoir pour quoi sa ne  marche quand je fait sa  ,  j'ai  tableau dinamique, avec des lettre dedand,  mais pas toute les case sont Au secours ! réseau [ par emmanuel9 ] Bonjour,j'ai un petit problème reseau en faite je voudrais separé les données c'est a dire que le serveur recoive : "Bonjour", "Au revoir deux" chaine Redimensionner un tableau de byte[] [ par el_teedee ] Bonjour, lors de ma déclaration, je dois déclarer le tableau avec 261 cases, mais il se peut qu'au cours du programme il n'utilise que 50 cases ou mo Gestion de tableau [ par RMI ] Bonjour, Quel est la méthode la plus rapide pour passer par exemple d'un tableau à 1 dimension à un tableau à 2 dimensions ? Exp: j'ai un tableau b int, short etc.. to byte[] [ par Sobieski ] Salut,Dans le cadre d'envois réseaux en TCP à un truc que je peux pas modifier, je dois envoyer un tableau de byte, avec dedans des ints, shorts, uint Allocation mémoire [ par sephiro ] Je débute en C# et je travaille surtout en C++En C# pas besoin de libérer la mémoire OK, mais si je passe en parametre à une fonction un pointeur sur tableau de byte dec en hexa [ par drcmomo ] Bonjour !! Je voudrais savoir si  il existe une fonction en C# qui permet  de convertir  un tableau(byte tableau(donnees decimal)) en un tableau(donne C# Buffer Circulaire (tableau circulaire) [ par apelleti ] Bonjour à tous,Je souhaiterais savoir si quelqu'un pourrait valider mon buffer et/ou m'indiquer les erreurs notables.[code] using System;using</spa Passer un tableau de Byte à une DLL [ par hdr ] Salut à tous,Je souhaiterai utiliser une fonction dans une DLL dont le prototype est :    public virtual int GetImageRawData(ref int pBuf, int bufLen)


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales