Se connecter avec
S'enregistrer | Connectez-vous

[.NET] Convertir array<unsigned char> en System::String ^ [Résolu]

Dernière réponse : dans Programmation

Bonjour,

Je développe en ce moment même deux petites applications, un serveur et un client, qui pourront communiquer entre eux via le protocole TCP pour s'envoyer des infos. Je code en C++ et en utilisant le framework dotNET.

Au niveau du client j'encode mon texte que je veux envoyer au serveur comme ceci :

  1. array<unsigned char> ^ buffer = Text::Encoding::ASCII->GetBytes(DataToSend);

Pourquoi ? Car la méthode du socket pour envoyer une info prend en premier paramètre un array<unsigned char> .

Le problème est que j'ai du mal à récupérer mon info du côté serveur pour par exemple l'afficher lorsque je la reçoit. L'info est bien la mais je n'arrive pas la décrypter correctement pour retrouver mon texte original. En gros je suis à la recherche d'une méthode pour convertir mon array<unsigned char> en string managé.

Merci de m'aider si vous le pouvez.
Lassé par la pub ? Créez un compte

Bon ba problème résolu, j'ai trouvé la solution.
Du côté serveur je créer un char* appelé tempbuffer qui est de la taille de mon buffer que je reçois encodé par le client.
Je remplis ce tempbuffer en castant chaque lettre du buffer reçu en char pour que ca soit compatible.
On rajoute le '\0' a la fin de la chaîne pour dire que c'est la fin de la chaîne.
Et finalement je créer un System::String avec le tempbuffer.
Et le tour est joué :) 

Voici le code si ca interesse des gens :
  1. char* tempbuffer = new char[buffer->Length+1];
  2. for(int i=0; i<buffer->Length; i++)
  3. tempbuffer[i] = safe_cast<char>(buffer[i]);
  4. tempbuffer[buffer->Length] = (char)0;
  5. String ^str = gcnew String(tempbuffer);
  6. delete tempbuffer;
  7. Console::WriteLine("Le client a envoyé : {0}.",str);
  8. delete str;
Lassé par la pub ? Créez un compte