C#: byte[ ] string et sockets ....

Résolu/Fermé
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - Modifié par Nabla's le 18/08/2010 à 11:42
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 21 août 2010 à 11:46
Bonjour à tous,

D'habitude je fais plutôt du C++, et là j'ai eu l'envie de me mettre au C# , pour faire un programme de type serveur...

le serveur recoit via la socket une chaine de caractères de forme: login pseudo mot_de_passe

un petit bout de code pour illustrer:
                    Byte buffer_ = new Byte[100];
                    int size = CurrentClient.Receive(buffer_);  
                    buffer_[size] = (byte)'\0';  
                    string buff = buffer_.ToString();  
                    Console.WriteLine(buff);  

                    Liste_contacts.Ajouter(buff, cont);  


donc je recois mes données dans un tableau de bytes, mais alors pour faire passer ca dans un string .... je bute... comme ca le code m'affiche System.Byte[]...

je suis sur que la solution est pas bien compliquée, mais je sèche un peu là ...
de plus, j'ai l'impression qu'en C# le type char est sur 2 octets (unicode)...

3 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
Modifié par Nabla's le 21/08/2010 à 11:46
et bien, merci Nico#, cette fonction a bien marché ...
juste, j'ai utilisé une surcharge différente car il me créait un string de la taille de mon buffer (1000) ....

j'ai donc ce code ci:
   int size = CurrentClient.Receive(buffer_); 
   string buff = System.Text.Encoding.ASCII.GetString(buffer_,0,size); 
1
Nico# Messages postés 323 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 28 août 2013 102
18 août 2010 à 20:40
Salut

C'est normal que tu reçoive System.Byte[] car la methode ToString() se réfere a l'Object il faut que tu utilise la methode GetString();
System.Text.Encoding.ASCII.GetString(TonByte);
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
18 août 2010 à 23:52
Salut !
ha, je savais bien qu'il y avait une méthode qui se cachait derrière les fagots ;)

j'ai pas le temps de tester ce soir (mode grododo), je testerai ca d'ici la fin du week end et te tiendrais au jus.
en tout cas, merci de m'avoir apporté cette fonction qui a l'air très prometteuse...
va falloir que j'aille bouquinner la doc des librairies de base du C# moi ...

ciao
0