ClientSocket problème de comunication avec un ServerSocket C/C++
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:
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:
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 :oops: )
Code:
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