Chers membres DelphiFR,
J'ai un probleme flagrant avec les composantes TServerSocket et TClientSocket.... je sais je sais épargnez moi les oh mon dieu c'est désuet , utilisez ICS ou Indy !!
Je n'ai jamais eu de probleme avec eux jusqu'a aujourd'hui, c'est tres simple , c'est leger et c'est asynchronous aussi

!
Lorsque je tente d'envoyer du texte plus gros que mon buffer du socket avec SendText, le texte se fait couper (Logique non ?

)!
Je travail en Non-Blocking mode, j'ai pas reelement besoin de l'autre mode!
Sachant que SendText equivaut a SendBuf(Pointer(text)^,lenght(text)) ....
Comment envoyer le texte (qui est souvent plus gros que 100 ko), jai penser a «splitter» ma string en plusieur partie et envoyer le tout ... et reassembler le tout a la reception
Apres des heures de recherche sur google je n'abouti a toujours a rien de concluant

J'ai aussi assayer de convertir ma longue string en TStringStream puis de lenvoyer avec SendStreamThenDrop, sa fonctionne partiellement (jai recu que la moitier du texte mais beaucoup plus qu'avec SendText!! ...)
ah oui et je recoit un Invalid Pointer Operation (je suis sur que cest lui qui fait planter mon texte et qui fait que jai obtenue seulement 60 % du texte)
Je vous en donne un extrait du code problematique (version avec TStringStream)
//CODE coter client lors de la reception du STREAM Texte ! (ecrit dans un fichier texte coter client, oui il i a un Create et Free pour TXTStream2 , il sont dans OnConnect et OnDisconnect (pas afficher))procedure TForm1.ClientTXTRead(Sender: TObject; Socket: TCustomWinSocket);
var
iLen: Integer;
Bfr: Pointer;
begin
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
try
Socket.ReceiveBuf(Bfr^, iLen);
TXTStream2.Write(Bfr^, iLen);
finally
FreeMem(Bfr);
end;
end;
//CODE Coter serveur quand le client se connecte,,, automatiquement lui renvoyer la string (Form3.outtxt)
procedure TForm1.ServerTXTClientConnect(Sender: TObject; Socket: TCustomWinSocket);
var
txtStream: TStringStream;
begin
txtStream := TStringStream.Create(form3.outtxt);
//***Selon le breakpoint que jai mit ici jai un Invalid Pointer Operation qui arrive a TXTStream.Free mais cest surement a la ligne du TStringStream.Create ou SendStreamThenDrop!!!Socket.SendStreamThenDrop(txtstream);
txtstream.Free;
end;
Es-ce que quelqun aurais une idee pour le Invalid Pointer Operation ? Et aussi pour SendText ?
Bonne journee!
Merci a vous !

Laurent
http://www.xpresstracker.com
http://www.qsc-news.com