Donc pour résumer là ou j'en suis... j'ai compris comment marchait les sockets Tserver et Tclient. Les procédures pour envoyer et recevoir du texte aussi. Cependant je veux envoyer plus que du texte, donc je me suis tourné vers les routines (je crois que ça s'appelle comme ça) SendBuf et ReceiveBuf. J'envoie un tableau pour l'instant uniquement du coté serveur qui contient le message envoyé par le serveur en Tab[1] et le pseudo en Tab[2]. L'envoi "semble" être un succès puisque le programme serveur ne plante pas. Mais sur le programme client il ya un probleme puisque je demande d'afficher le message dans un mémo et le pseudo dans un autre. Seul une ligne blanche s'affiche dans le mémo du client. Je vais rajouter le code partiel pour ceux qui me trouvent incompréhensible
Le code ci dessous est présent dans les 2 programmes (juste après l'implementation):
Coté Serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Type T_Tab=Array[1..3] of String; Var Tab:T_Tab; Form1: TForm1;
Coté Client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); Begin If Key = #13 Then If Edit2.Text <> '' Then Begin Tab[2]:= 'Admin'; Tab[1]:= Edit2.Text; If Serveur.Socket.ActiveConnections <> 0 Then Begin Serveur.Socket.Connections[0].SendBuf(Tab,SizeOf(Tab)); Edit2.Text := ''; End; End;
merci d'avoir lu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); Begin Recus := Socket.ReceiveLength; If Recus <> SizeOf(Tab) then Exit; Socket.ReceiveBuf(Tab,Sizeof(Tab)); If Tab[1] <> '' Then Memo2.Lines.Add(Tab[1]); If Tab[2] <> '' Then Memo3.Lines.Add(Tab[2]); end;
Partager