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
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 char nom_serveur [50] int nbr_connecte char liste_connecte[50][50]
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 Treception: record NomServeur: String[50]; NbConnecte: Integer; ListeConnecte: Tstringlist; 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:
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 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
Partager