Probleme de stream

ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009 - 25 juin 2005 à 11:14
Pornman Messages postés 20 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 20 janvier 2006 - 11 oct. 2005 à 06:03
Voila en faites je suis en train de creer un logiciel ou on
charge des image dans un TImage et l'on envoie ensuite la photo par
stream. Mon probleme : Je me connecte tous est ok rensuite je charge la
photo tout est ok ensuite je l'envoie par stream la k'envoie est ok
mais pas la reception car j'ai mis dans le serveur sue a chaque fois
que une image sera recu ilo affche image recu. Je pense que c'est parce
que j'ai mis trop de code dans l'venement OnExecute du serveur et que
au moment Ou l'image est envoye elle ne peut etre receptionner. Mais le
probleme n'arrive pas tout de suite . Quand j'envoie l'image je ne peux
plus envoyer de texte ce qui est deja pas normal car avant que je
l'envoi je peux envoyer du texte mais une fois que je l'ai envoyer je
peux encore clicquer sur le bouton d'envoie mais je ne le recoie
jamais. Mais le vrai truc embettant c'est a chaque fois que j'envoie
l'image et que ensuite je me deconnecte : si je me deconnecte tt de
suite il me dise qu'il y a une excpetion de violation d'acces . Je vous
met le code de l'envoie de l'image sur le TButton (prenait en compte
que la connection est deja etablie):

var

MemStream:TMemoryStream; // Déclaration des variables

begin







MemStream:=TMemoryStream.Create;









try

webcam.Picture.Graphic.SaveToStream(Memstream);//Chargement de l'image jpg dans le stream





try

with IdTCPClient1 do

begin

OpenWriteBuffer;

WriteStream(memstream);//Envoi du stream

CloseWriteBuffer;

memstream.Free;

ShowMessage ('Photo envoyer')

end;

except

ShowMessage ('Impossible pour le moment reessayer plus tard')

end;

finally

end;

end;



la tout marche tres bien

ensuite ce qui bug je le met en rouge Le code dans l'evenement OnExecute su Serveur:

var

texte : string;

stream : TMemoryStream;

Bmp: TBitmap;

begin

with AThread.Connection do

try

texte := ReadLn();

ShowMessage(texte);

Memo1.Lines.Add(texte)

except

ShowMessage ('deconnection');

begin

TBitmap.Create;

stream:= TMemoryStream.Create;

athread.Connection.ReadStream(stream, -1, true);

Stream.Seek(0, soFromBeginning);



Bmp.LoadFromStream(stream);

webcam.Picture.Graphic.Assign(Bmp);

Memstream.free;

ShowMessage('Vous venez de recevoir une image ');



try

texte := ReadLn();

ShowMessage(texte);

Memo1.Lines.Add(texte)

except

ShowMessage ('deconnection');

end;

end;

end;

end;

Pitie aider moi!!!!!

12 réponses

Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
25 juin 2005 à 13:54
Salut,

à mon avis tu devrais utliser un deuxième port pour le transfert.
ex:
Text: port 50
ImageStream: port 55

voila ca corrige pas mal de problème, j'espère que le tien assi.

Filipe
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
25 juin 2005 à 19:02
Je vais essayer
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
25 juin 2005 à 19:31
J'ai fait ce que tu m'as dit mais maintenant il me dit qu'il ne
trouve plus plus le fichier source IdStack et quand je fait ignorer
pour que cela s'en aille il m'affiche une exeption je te mets l'image :











J'ai vraiment besoin d'aide je suis sur un tres gros projet un TChat comme tu dis mais bourrer de fonction !!
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
25 juin 2005 à 20:09
Est ce que c peut etre parce que j'envoie et je recoie moi meme le
fichier tu crois que c'est pour sa que j'ai toujours un access
violation mais ce qui est toujours bizarre c'est la reception. J'ai
essayer un autre port que celui de lenvoie de texte. je te met le code :

code du boutton :

var

stream: TMemoryStream;

begin

stream:= TMemoryStream.Create;

if OpenDialog1.Execute then stream.LoadFromFile(OpenDialog1.FileName);

IdTCPClient1.Port:= StrToInt(Edit1.Text);

IdTCPClient1.Host:= Edit2.Text;

IdTCPServer1.DefaultPort:= StrToInt (Edit1.Text);

IdTCPClient1.Connect;



try

IdTCPClient1.OpenWriteBuffer;

IdTCPClient1.WriteStream(stream);

IdTCPClient1.OpenWriteBuffer;

ShowMessage('Fichier envoyer ')

except

ShowMessage('Erreur')

end;



end;

code de l'evenement OnExecute :

var

stream: TMemoryStream;

begin

with Athread.Connection do





stream:= TMemoryStream.Create;

athread.Connection.ReadStream(stream, -1, true);

Stream.Seek(0, soFromBeginning);

ShowMessage('Vous venez de recevoir un fichier ');

if SaveDialog1.Execute then stream.SaveToFile(SaveDialog1.FileName);



stream.free;





end;

Mais le probleme c'est que le chzamp de SaveDialog1.Execute ne
s'affiche jamais et que le message vous avez recu un fichier non plus
donc c'est un erreur de reception car je ne recoie jamais l'image mais
je pense vraiment que c'est du A ce que c'est moi qui envoie le fichier
et qui la recoie.

Merci beaucoup de ton aide et de ta patience.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
25 juin 2005 à 20:11
Heu je pensse que tu as oublié quelque chose

as-tu bien mis un 2clients sur le prog1 et deux serveur sur le prog2 ??

Filipe

Si il n'y a pas de serveur Actif sur le port n alors la connexion est refusée.
0
Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
25 juin 2005 à 23:26
Ta source est très interessante pour un de mes projets je vais m'y pencher dessus.
Peut-être que si je la fini, je te fait signe.

Filipe
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
26 juin 2005 à 09:31
Non , c'est bon je prefere la finir moi tous seul et en faites non je n'ai pas mis de deuxieme cient et deuxieme serveur.
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
26 juin 2005 à 09:32
Parce que en faites pour le transfert de fichier j'ai creer une
autre form avec donc un autre client et un autre serveur alors je pense
que sa peut compter comme deux serveur et de client.
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
26 juin 2005 à 13:34
Est ce que il est possible d'ouvrir une form que on cache derriere
la form principal a l'ouverture de l'application. Etv que au moment ou
l'on clic sur un bouton ou que on recoit un stream la form ressorte.
Parce que j'ai mis le client et le serveur d'envoie /reception de
fichiers sur cette form
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
26 juin 2005 à 13:38
Ta source utilise les composants ClientSocket ServeurSocket moi j'utilise les composants Indy 9
0
ewertheimer Messages postés 161 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 26 janvier 2009
26 juin 2005 à 13:45
Je crois que sa bug parce que j'envoie et je recoie a la fois
sur le meme port le fichier il faudrait que je test avec kelkun
d'autres. Si il y a un volontaire pour que je lui envoie mon exe afin
de la tester.

Sachant que comme c'est d tcp/ip vous aurez besoin de mon ip et moi de la votre. Si il y a des volontaires. Faites moi signe.
0
Pornman Messages postés 20 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 20 janvier 2006
11 oct. 2005 à 06:03
Moi je suis volontaire si tu a toujour un probleme

barbx_diablo@hotmail.com

Laisse moi un message
0
Rejoignez-nous