[Sockets/Sendbuf]Logiciel de chat
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 8O
Le code ci dessous est présent dans les 2 programmes (juste après l'implementation):
Code:
1 2 3 4 5 6 7
|
Type
T_Tab=Array[1..3] of String;
Var
Tab:T_Tab;
Form1: TForm1; |
Coté Serveur:
Code:
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; |
Coté Client:
Code:
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; |
merci d'avoir lu.