bon voila je me lance,

cela fait déjà plusieurs semaines que je cherche sur différents forum une solution à mon problème.

Mon application est un ClientSocket (Delphi) qui ce connecte a un ServerSocket (C/C++) pas de souci pour la connection.

- J'arrive à recevoir par le biais de "ClientSocket1.Socket.ReceiveText" et à l'afficher là ou il faut donc pas de souci.
- J'ai voulu utiliser la fonction "ClientSocket1.Socket.ReceiveBuf()" pour recevoir une "structure" et la sa part dans tout les sens.

voici la structure que je suis censé recevoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
char nom_serveur [50]
int nbr_connecte
char liste_connecte[50][50]
pour ça j'ai créer un type record de cette forme la:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Treception: record
       NomServeur: String[50];
       NbConnecte: Integer;
       ListeConnecte: Tstringlist;
  end;
la procédure OnRead: (Soyez indulgent je ne suis que débutant )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
Var
Reception: Treception;
indx: Integer;
begin
ClientSocket1.Socket.ReceiveBuf(Reception, 
seizof(Treception));// reception des données
 
Label1.Caption:=IntToStr(reception.NbConnecte);// Affichage du nb de connectés
If Reception.ListeConnecte.Count > 0 then              //   Remplissage de la
 for indx: 0 To Reception.ListeConnecte.Count -1 for   //  ListeBox1 par la
  ListBox1.Items.Add(Reception.ListeConnecte[indx])   //  Liste des connectés
end;
end.
au cours des différentes manipulations et teste j'ai reçu plusieurs fois des données notamment le nom du serveur troncé de la première lettre:
au lieu de "Toto" (NomServeur) je recevais "otoxxxxxxxx" (xxxxxx sont des caractères aléatoire)
au lieu de "2" (NbConnecte) je recevais un nombre aléatoire.
au lieu de "Toto1, Toto2" (ListeConnecte) je recevais "'','','','','','','',''"

j'en conclus 2 choses:
1°) Pour le probleme du "oto" au lieu de "toto" je pense que ca vient du fait que le 1er caractère est la "taille" de ta chaine en delphi (si je ne me trompe pas) or ce n'est pas le cas en C/C++ il me semble.
2°) que le code de la procédure OnRead n'est pas bon.

c'est pour ça que je viens demander vos lumières