ClientSocket, ServerSocket Silence radio (sendstream)

Résolu
Bastard60 Messages postés 3 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 23 août 2005 - 19 août 2005 à 11:39
Bastard60 Messages postés 3 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 23 août 2005 - 23 août 2005 à 08:11
Salutation belle compagnie, ça faisait un petit moment que j'avait pas ecrit pour pleurer l'aide d'eminences grises, plus grises que moi.

Voila j'ai une petite appli client serveur via ClientSocket et ServerSocket, Je veux recuperer un fichier xml qui contient les info d'une requète sql.
je passe donc par stream. transformant en flu mon Xml et l'envoyant via :
ServerSocket1.Socket.Connections[0].SendStream(Stream);

voila le code de l'envoi;


code

<HR color=#ffffff SIZE=1>
procedure TFormServeur.EnvoyerClick(Sender: TObject);
Var FileStr:TFileStream;
Stream:TMemoryStream;
begin
ClientDataSetNoms.SaveToFile('../Monxml.xml');
HKStreams.ClearStreams;
FileStr:=TFileStream.Create('../Monxml.xml', fmOpenRead);
Try
HKStreams.AddStream('XML', FileStr);
Finally
FileStr.Free;
End;
Stream:=TMemoryStream.Create;
HKStreams.SaveToStream(Stream);
// on balance le stream au client
ServerSocket1.Socket.Connections[0].SendStream(Stream);
end;
<HR color=#808080 SIZE=1>

coté client j'ai recuperer un code pour recuperer le stream (on a pas idée de faire des SendStream et pas de ReciveStream )
mais le probleme c'est que le le client ne recoit rien du tout! il ne rentre pas dans la procedure :


code

<HR color=#ffffff SIZE=1>
procedure TFormClient.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var tempstream : TMemoryStream;
Buffer : Pointer;
begin
while Socket.ReceiveLength > 0 do begin
Buffer := AllocMem(Socket.ReceiveLength);
try
Socket.ReceiveBuf(Buffer^, Socket.ReceiveLength);
tempstream.Write(Buffer^, StrLen(Buffer));
finally
FreeMem(Buffer);
end;
tempstream.Seek(0, soFromBeginning);
ClientDataSet1.LoadFromStream(tempstream);
end;
end;
<HR color=#808080 SIZE=1>

voial si vous avez des suggestions je suis tout ouïe

4 réponses

Bastard60 Messages postés 3 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 23 août 2005
23 août 2005 à 08:11
j'ai finalement trouver pourquoi le client ne voulait rien entendre!
c'est juste car le serveur n'envoyait rien!
en effet j'avait oublié un petit : Stream.Position := 0; du coté serveur.
toute fois les probleme c'etant suivis par la suite, je passe finalement par les composant indi. bien plus facile a utilisé.
(les pb en question sont en rapport avec :
while Socket.ReceiveLength > 0 do begin
Buffer := AllocMem(Socket.ReceiveLength);
la fonction renvoi une valeur approxiamative et coupe le stream en deux partie! pas pratique du tout ^_^. )
3
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
19 août 2005 à 16:40
Etant donné que tu envoi et recoi un fichier xml pourquoi tu n'utiliserai pas les wrtieln et les readLn qui sont concus pour envoyer et recevoir des lignes ?

neodelphi
0
Bastard60 Messages postés 3 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 23 août 2005
22 août 2005 à 08:21
Le probleme c'est que bien que je l'ai pas encore implementé, le contenu du xml sera cripté et compressé via HKStream. dans ce cas il ne s'agit plus d'un texte en lui meme.
Mais ce que je trouve etrange c'eest vraiment que le client ne recoive rien, avec un simple Sendtext(montext). il reçois parfaitement. il ne s'agirais pas d'une erruer dans mon code? j'aimerai savoir si quelqun a deja envoyer des streams via serveursocket et Clientsocket, qu'il me poste le code pour que je vois ou ça va pas ^_^.
mici d'avance.
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
22 août 2005 à 19:06
As-tu au moins essayé d'envoyer du texte ? au pire de toute facon tu peut envoyer tes données binaires sous forme de texte.

Vérifi qu'il n'y à pas un pare-feu, un routeur ou quelque chose qui bloque le transfert...

neodelphi
0
Rejoignez-nous