begin process at 2010 02 09 14:41:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ENVOI ET RÉCEPTION D'UNE CAPTURE D'ÉCRAN PAR STREAMS AVEC LES COMPOSANTS TCP INDY

ENVOI ET RÉCEPTION D'UNE CAPTURE D'ÉCRAN PAR STREAMS AVEC LES COMPOSANTS TCP INDY


 Information sur la source

Note :
9,63 / 10 - par 8 personnes
9,63 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :indy, tcp, stream, download, upload Niveau :Débutant Date de création :04/10/2004 Date de mise à jour :04/10/2004 20:29:57 Vu / téléchargé :7 605 / 1 593

Auteur : cali70

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Je dispose de Delphi 7 et je voulais créer une application capable d'envoyer une capture de mon écran à un ordinateur distant. Après avoir chercher un peu parmi les sources disponibles et après avoir tester quelques un, je n'ai pas trouver de solution convenant à mes besoins. Il y'a bien une source qui présente comment faire une application du style VNC mais il n'est pas précisé k'il faut pour pouvoir compiler ce code disposer de composants fastnet qui ont malheureusement disparus de la palette Delphi 7. Je propose donc ici un moyen très simple d'envoyer une capture d'écran par streaming à l'aide des composants Indy (fournis avec Delphi 7). Le principe est simple, le logiciel client crée une capture d'écran, la converti en jpg, l'enregistre dans un stream et l'envois par TCP. De son côté le logiciel serveur réceptionne le stream et le charge dans un coposant Timage. Le code présente juste la maniere d'envoyer et recevoir le stream, libre a vous de vous en servir comme bon vous semble, il est tt à fait possible de se servir du code dans l'autre sens, c'est à dire d'envoyer le stream depuis le serveur jusqu'au client après que le serveur ait recu une requette lui demandant d'envoyer l'image (moyennant peu être quelques modifications pas insurmontables même pour débutant). Le programme client se présente de cette maniere : c'est une form avec 2 boutons, un pour démarrer l'envois et l'autre pour l'arreter. Il y'a aussi 2 edits, un où l'on doit mettre l'ip du serveur distant et l'autre où l'on indique l'intreval des envois de capture d'écran "en ms" (la valeure de l'intreval de répétion du timer). dans le cas de l'envois du stream depuis le serveur jusqu'au client après la réception d'une requette il est plus commode de ne pas utiliser de timer, simplement d'envoyer une nouvelle requette pour une capture lors de la réception de la précédente. Attention ce deuxieme cas n'est pas abordé ici car ce n'est pas de cette fonction que j'avais besoin mais je la posterai sans doute en complément plus tard. Sinon le logiciel serveur contient un composant tcp server Indy et un composant Timage, c'est tout. Je sais je parle trop mais que voulez vous, on se refait pas ;)

Source

  • // Sources du client :
  • unit Unit1;
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  • IdTCPClient,jpeg, ExtCtrls; //Ne pas oublier de déclarer la classe jpeg
  • type
  • TForm1 = class(TForm)
  • tcp: TIdTCPClient; //Composant tcp client de Indy
  • Button1: TButton;
  • Edit1: TEdit;
  • Timer1: TTimer;
  • Button2: TButton;
  • Label1: TLabel;
  • Edit2: TEdit;
  • Label2: TLabel;
  • procedure Button1Click(Sender: TObject);
  • procedure sendstr;
  • procedure Timer1Timer(Sender: TObject);
  • procedure Button2Click(Sender: TObject);
  • private
  • { Private declarations }
  • public
  • { Public declarations }
  • end;
  • var
  • Form1: TForm1;
  • implementation
  • {$R *.dfm}
  • procedure TForm1.sendstr; //Procedure de capture d'écran,conversion en jpg et envoi
  • var Img:TPicture;
  • MemStream:TMemoryStream; // Déclaration des variables
  • JPG:TJPEGImage;
  • Bmp :TBitMap;
  • Rect:TRect;
  • begin
  • Img:=TPicture.Create;
  • Bmp := TBitMap .Create; //Initialisation des variables qui doivent l'être
  • MemStream:=TMemoryStream.Create;
  • Img.Bitmap.Width:=Screen.Width;
  • Img.Bitmap.Height:=Screen.Height;
  • BitBlt(Img.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy); //Capture de l'écran
  • JPG:=TJPEGImage.Create;
  • try
  • JPG.Assign(Img.Bitmap); //Conversion en jpg
  • JPG.CompressionQuality:=15;
  • Bmp.Width :=Jpg.Width -50;
  • Bmp.Height :=Jpg.Height -50;
  • Rect.Left :=0;
  • Rect.Top :=0;
  • Rect.Right :=Bmp.Width-1;
  • Rect.Bottom:=Bmp.Height-1;
  • Bmp.Canvas.StretchDraw(Rect,Jpg);
  • Jpg.Assign(Bmp);
  • jpg.savetostream(Memstream);//Chargement de l'image jpg dans le stream
  • finally
  • bmp.Free;
  • img.free;
  • JPG.Free;
  • try
  • with tcp do
  • begin
  • OpenWriteBuffer;
  • WriteStream(memstream);//Envoi du stream
  • CloseWriteBuffer;
  • memstream.Free;
  • disconnect; //Déconnexion
  • end;
  • except
  • end;
  • end;
  • end;
  • procedure TForm1.Button1Click(Sender: TObject); //Bouton pour démarrer l'envoi
  • begin
  • try
  • timer1.Interval:= strtoint(edit2.Text);//Définition de l'interval du timer
  • tcp.Host:= edit1.Text; //Définition de l'hote (serveur)
  • timer1.Enabled:=true; //Démarrage du timer
  • except
  • end;
  • end;
  • procedure TForm1.Timer1Timer(Sender: TObject); //Procedure que le timer execute celon l //'interval donné
  • begin
  • try
  • tcp.Connect; //Connexion du client tcp
  • form1.sendstr; //Execution de la procédure définie plus haut
  • except
  • timer1.Enabled:= false; //Si la connexion est impossible on arrete le timer
  • showmessage('connextion impossible'); //On affiche une boite de dialogue qui nous informe
  • end;
  • end;
  • procedure TForm1.Button2Click(Sender: TObject); //Bouton qui arrete l'envoi
  • begin
  • timer1.Enabled:= false; //On arrete tout simplement le timer
  • end;
  • end.
  • //Sources du serveur
  • unit Unit1;
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, IdBaseComponent, IdComponent, IdTCPServer, ExtCtrls,jpeg; //Pas oublier jpeg
  • type
  • TForm1 = class(TForm)
  • tcp: TIdTCPServer;//Composant serveur TCP Indy
  • Image1: TImage;
  • procedure tcpExecute(AThread: TIdPeerThread);
  • private
  • { Private declarations }
  • public
  • { Public declarations }
  • end;
  • var
  • Form1: TForm1;
  • implementation
  • {$R *.dfm}
  • procedure TForm1.tcpExecute(AThread: TIdPeerThread); //procedure appellée lors de la
  • var stream : tmemorystream; //réception des données
  • jpg : tjpegimage; //Définition des variables
  • begin
  • jpg:= tjpegimage.Create; //Initialisation de jpg et stream
  • stream:= tmemorystream.Create;
  • athread.Connection.ReadStream(stream, -1, true); //réception du stream du début à la fin
  • Stream.Seek(0, soFromBeginning); //On reset la position du pointer pour la lecture
  • // Peut être remplacer par stream.position:=0;
  • jpg.LoadFromStream(stream); //Chargement du stream dans la variable jpg
  • image1.Picture.Graphic:= jpg; //Affichage de l'image contenue dans jpg sur le Timage
  • stream.free; //Purge de la mémoire du stream
  • end;
  • end.
// Sources du client :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient,jpeg, ExtCtrls;  //Ne pas oublier de déclarer la classe jpeg

type
  TForm1 = class(TForm)
    tcp: TIdTCPClient; //Composant tcp client de Indy
    Button1: TButton;
    Edit1: TEdit;
    Timer1: TTimer;
    Button2: TButton;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure sendstr;
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.sendstr;  //Procedure de capture d'écran,conversion en jpg et envoi
var Img:TPicture;
MemStream:TMemoryStream; // Déclaration des variables
JPG:TJPEGImage;
Bmp :TBitMap;
Rect:TRect;

begin

   Img:=TPicture.Create;                         
   Bmp := TBitMap .Create; //Initialisation des variables qui doivent l'être
   MemStream:=TMemoryStream.Create;

     Img.Bitmap.Width:=Screen.Width;
       Img.Bitmap.Height:=Screen.Height;            
        BitBlt(Img.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy); //Capture de l'écran
                JPG:=TJPEGImage.Create;
             try
             JPG.Assign(Img.Bitmap);   //Conversion en jpg
             JPG.CompressionQuality:=15;
             Bmp.Width :=Jpg.Width -50;
             Bmp.Height :=Jpg.Height -50;
             Rect.Left :=0;
             Rect.Top :=0;
             Rect.Right :=Bmp.Width-1;
             Rect.Bottom:=Bmp.Height-1;
             Bmp.Canvas.StretchDraw(Rect,Jpg);
             Jpg.Assign(Bmp);
             jpg.savetostream(Memstream);//Chargement de l'image jpg dans le stream
             finally
             bmp.Free;
             img.free;
             JPG.Free;
        try
        with tcp do
        begin

        OpenWriteBuffer;
        WriteStream(memstream);//Envoi du stream
        CloseWriteBuffer;
        memstream.Free;
        disconnect; //Déconnexion
        end;
        except

        end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject); //Bouton pour démarrer l'envoi
begin
try
timer1.Interval:= strtoint(edit2.Text);//Définition de l'interval du timer
tcp.Host:= edit1.Text;  //Définition de l'hote (serveur)
timer1.Enabled:=true; //Démarrage du timer
except
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject); //Procedure que le timer execute celon l                                                                              //'interval donné
begin
try
tcp.Connect; //Connexion du client tcp
form1.sendstr; //Execution de la procédure définie plus haut
except
timer1.Enabled:= false;  //Si la connexion est impossible on arrete le timer
showmessage('connextion impossible'); //On affiche une boite de dialogue qui nous informe

end;

end;

procedure TForm1.Button2Click(Sender: TObject); //Bouton qui arrete l'envoi
begin
timer1.Enabled:= false; //On arrete tout simplement le timer
end;

end.





//Sources du serveur

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, ExtCtrls,jpeg; //Pas oublier jpeg

type
  TForm1 = class(TForm)
    tcp: TIdTCPServer;//Composant serveur TCP Indy
    Image1: TImage;
    procedure tcpExecute(AThread: TIdPeerThread);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.tcpExecute(AThread: TIdPeerThread); //procedure appellée lors de la 
var stream : tmemorystream; //réception des données  
jpg : tjpegimage; //Définition des variables
begin

jpg:= tjpegimage.Create; //Initialisation de jpg et stream
stream:= tmemorystream.Create;
athread.Connection.ReadStream(stream, -1, true); //réception du stream du début à la fin
Stream.Seek(0, soFromBeginning);  //On reset la position du pointer pour la lecture 
                                                      // Peut être remplacer par stream.position:=0;
jpg.LoadFromStream(stream);  //Chargement du stream dans la variable jpg
image1.Picture.Graphic:= jpg;  //Affichage de l'image contenue dans jpg sur le Timage
stream.free; //Purge de la mémoire du stream


end;

end.

 Conclusion

Voilà, pour précision, le composant serveur doit être activé pour pouvoir recevoir des informations, celà peut être fait de la maniere suivante "nomduserveur.active:=true;". Ce n'est pas apparent dans la source car je l'ai définit comme activé dans l'inspecteur d'objet avant l'execution. De même le port de communication n'est pas apparent dans la source non plus car je lui ai attribué une valeure arbitrairement dans l'inspecteur d'objet également.
Si vous avez des commentaire je suis preneur, sauf si c'est pour me dire que le code n'a rien à faire ici parce que c'est trop simple où je ne sais quoi (j'ai observé ca ici). Comme je l'ai précisé j'ai chercher une solution dans les sources proposée et je n'ai pas trouvé de sujet traitant de cette maniere relativement facile le problème. mauvaises langues s'abstenir merci.
Les commentaires du codes paraitront surement inutiles et dérisoires pour les programmeurs confirmés mais je suis sure que certains débutants aprécieront. C'est bon je me tais, j'ai fini lol.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • client.zipTélécharger ce fichier [Réservé aux membres club]9 708 octets
  • serveur.zipTélécharger ce fichier [Réservé aux membres club]7 250 octets

Télécharger le zip


 Historique

04 octobre 2004 20:29:58 :
Déplacement des commentaires dans la source.

 Sources de la même categorie

Source avec Zip BASE64/BASE64URL ENCODE/DECODE par f0xi
Source avec Zip AFFICHAGE DES INFODFS par fbalien
Source avec Zip Source avec une capture INTRA MESSENGER - DELPHI par keket
Source avec Zip CODAGE DÉCODAGE PDU 7BITS par AccessToYou
Source avec Zip Source avec une capture SIMPLEWEBBROWSER par cantador

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LOGICIEL INTERRUPTEUR MONDIAL USB par ced55957
Source avec Zip Source avec une capture PARSER D'EN-TÊTE HTTP par ILP
Source avec Zip Source avec une capture TEXTURE PACKER - OU COMMENT GÉRER UNE BANQUE DE TEXTURES FAC... par Bacterius
Source avec Zip Source avec une capture DOWNLOADS HTTP EN MULTITHREAD AVEC INDY par JeremyLecouvert
Source avec Zip Source avec une capture TÉLÉCHARGEMENT DE MISES À JOUR AVEC INDY par Matt 261

Commentaires et avis

Commentaire de cali70 le 04/10/2004 20:32:30

Je sais pas si ca vient de moi ou pas mais quand je consulte la source sur le site, une partie du texte est mangée sur la droite :( Pas ma faute!

Commentaire de taye78 le 04/10/2004 20:44:17

Effectivement j'ai le meme probleme chez moi.
Dommage.

Commentaire de cali70 le 04/10/2004 20:49:06

Bon est bien si quelqu'un sait de quoi ca vient.... Qu'on me le dise si je peux corriger ca en modifiant la source :(

Commentaire de cali70 le 04/10/2004 21:04:17

Je viens de tester, ceux qui ont une résolution d'écran supérieure à 1024*768 devraient tout voir sans probleme je pense... (j'ai un moniteur 15 pouces que voulez vous.... :( )

Commentaire de Inekman le 05/10/2004 12:26:11

1280 * 10245 et c'est aussi bordelique que chez toi :-P

Par contre concernant le code, est-ce qu'il aurait été possible de mettre :
[code]
try
tcp.Connect; //Connexion du client tcp
form1.sendstr; //Execution de la procédure définie plus haut
except
showmessage('connextion impossible'); //On affiche une boite de dialogue qui nous informe
[/code]

directement dans l'évènement OnClick du bouton...Je vois pas à quoi sert le Timer :-)

Commentaire de Inekman le 05/10/2004 12:39:02

ah oui, là c'est plus clair :-)

Commentaire de MAURICIO le 06/10/2004 13:26:53

La largeur de la cellule de la table oú se trouve le commentaire est plus grande que l' espace disponible par la table elle meme! c' est donc une erreur de mise en page du Webmaster.
Sinon, ton code, j' ai trouvé la meme chose mais sans les composants Indy.

Commentaire de cali70 le 06/10/2004 21:21:19

Je suis interessé par ce que tu as trouvé, quelle solution proposes tu ?

Commentaire de MAURICIO le 07/10/2004 18:55:16

Écrit moi en cliquant sur mon nom et donne moi ton mail. Je te donnerai la source ...

Commentaire de cali70 le 09/10/2004 20:37:51

Pour ceux que ca interesse j'ai l'équivalent de ce code pour C++ Builder 6. C'est très ressemblant à part quelques différences de syntaxe bien entendu. Je l'ai posté dans la partie C++ du site mais il semble ne pas apparaitre pour le moment donc si vous êtes interessé par ca ou autre chose : cali7-0@wanadoo.fr ou marcramage@hotmail.com pour msn.

Bonne progz tout le monde...

Commentaire de Inekman le 09/10/2004 21:14:58

est-ce que VNC utilise ce genre de procédé ?

Commentaire de cali70 le 09/10/2004 22:33:07

Quelque chose dans le style oui, j'imagine. Pas implémenté de cette maniere là car mes sources ne sont pas écrites dans ce but à la base mais les fonctions d'envois et de réception doivent être du même principe. Je suppose néanmoins que un logiciel comme vnc transmet au client uniquement les pixels qui changent à l'écran pour alleger le flux de données à envoyer et non pas une capture d'écran complete à chaque fois. Enfin ce n'est que pur supposition de ma part... +++

Commentaire de cali70 le 10/10/2004 11:44:09

Voilà pour ceux qui sont éventuellement interessés de voir ce que ca donne, le code pour c++ builder 6 est ici :
http://www.cppfrance.com/code.aspx?id=26700.

Bonne progz à tous !

Commentaire de Antidote le 19/10/2004 17:28:41

Salut pour votre pb d'écran Mozilla permet de tout vizualiser même so le texte déborde à droite au moins il n'est pas rogner. ^^

Commentaire de chick le 29/11/2004 16:16:10

Bonjour je vous demande de l'aide sur le type Tbitmap

regardez
bmp1.assign(image1.bmp);
bmp2.assign(image1.bmp);

if bmp1=bmp2 donne false !!!!!
aidez moi je coule
berdjane_b@yahoo.fr

Commentaire de ewertheimer le 24/06/2005 08:58:34

J'aimerais savoir comment est ce que on peut faire pour ajouter une procedure sans passer par un TButton??

Commentaire de ewertheimer le 24/06/2005 09:05:30

Quand je met en route le code du client il me dise que tjpegimage n'est pas un identificateur declare.

Commentaire de ewertheimer le 24/06/2005 09:20:48

Quand je met en route le code du client il me dise que TJPEGImage n'est pas un identificateur declare. Et sa me fou tout en l'air pourrais tu m'aider

Commentaire de ewertheimer le 24/06/2005 20:45:08

J'ai modifier un peu ton code comme ceci :
procedure TForm1.Button5Click(Sender: TObject);

var
  Img:TPicture;
MemStream:TMemoryStream; // Déclaration des variables
JPG:TJPEGImage;
Bmp :TBitMap;
Rect:TRect;

begin

Img:=TPicture.Create;
Bmp := TBitMap .Create; //Initialisation des variables qui doivent l'être
    MemStream:=TMemoryStream.Create;

      Img.Bitmap.Width:=webcam.Width;
        Img.Bitmap.Height:=webcam.Height;

JPG:=TJPEGImage.Create;
try
JPG.Assign(webcam); //Conversion en jpg
JPG.CompressionQuality:=15;
Bmp.Width :=Jpg.Width -50;
Bmp.Height :=Jpg.Height -50;
Rect.Left :=0;
Rect.Top :=0;
Rect.Right :=Bmp.Width-1;
Rect.Bottom:=Bmp.Height-1;
Bmp.Canvas.StretchDraw(Rect,Jpg);
Jpg.Assign(Bmp);
jpg.savetostream(Memstream);//Chargement de l'image jpg dans le stream
              finally
              bmp.Free;
              img.free;
              JPG.Free;
         try
         with IdTCPClient1 do
         begin

         OpenWriteBuffer;
         WriteStream(memstream);//Envoi du stream
         CloseWriteBuffer;
         memstream.Free;
         disconnect; //Déconnexion
         end;
         except

         end;

end;
end;
Et ils me disent qu'iol y a une excpetion : impossible d'affecter un TImge à un TBitmap.

Commentaire de ewertheimer le 24/06/2005 20:53:06

J'ai essayer autre chose qui je pense marcherais mieux : au faite webcam c'est Image1.
procedure TForm1.Button5Click(Sender: TObject);

var
  Img:TPicture;
MemStream:TMemoryStream; // Déclaration des variables
JPG:TJPEGImage;
Bmp :TBitMap;
Rect:TRect;

begin

Img:=TPicture.Create;
Bmp := TBitMap .Create; //Initialisation des variables qui doivent l'être
    MemStream:=TMemoryStream.Create;

      Img.Bitmap.Assign(webcam);


JPG:=TJPEGImage.Create;
try
JPG.Assign(Img.Bitmap); //Conversion en jpg
JPG.CompressionQuality:=15;
Bmp.Width :=Jpg.Width -50;
Bmp.Height :=Jpg.Height -50;
Rect.Left :=0;
Rect.Top :=0;
Rect.Right :=Bmp.Width-1;
Rect.Bottom:=Bmp.Height-1;
Bmp.Canvas.StretchDraw(Rect,Jpg);
Jpg.Assign(Bmp);
jpg.savetostream(Memstream);//Chargement de l'image jpg dans le stream
              finally
              bmp.Free;
              img.free;
              JPG.Free;
         try
         with IdTCPClient1 do
         begin

         OpenWriteBuffer;
         WriteStream(memstream);//Envoi du stream
         CloseWriteBuffer;
         memstream.Free;
         disconnect; //Déconnexion
         end;
         except

         end;

end;
end;
Ensuite il y a une classe d'exception EConvertError avec le message impossible d'affecter TImage à TBitmap
Pourrais tu m'aider j'en ai grandement besoin!!!!

Commentaire de askil2000 le 17/10/2005 03:00:05

Salut à tous, je voulais tout dabor te remercier pour ta source qui traite simplement un sujet compliqué ;) cependant j'ai un petit problème que je pose à tous bien-entendu. Je voudrais tout simplement (c vite di lol) me connecter au server et lui transmettre les données, sachant que ce dernier se trouve derrière un routeur :(
si qq'un peut me dire comment on fait un route sur un programme ?
j'ai déja été confronté à ce problème plusieurs fois, sachant que j'ai biensure les 2 adresses IP Internet exemple : 220.125.18.102 et adresse locale : 192.168.0.2 je souhaite tout simplement passer le routeur en me connectant au server directement. Merci à tous et surtout bonne prog !!!

Commentaire de taye78 le 17/10/2005 16:53:44

askil2000 tu dois "forwarder" le port du serveur oú le client va se connecter en accédant au config du routeur (souvent en te connectant sur son adresse ip)
a+

Commentaire de askil2000 le 19/10/2005 04:21:30

merci pour ta réponse taye78, mais j'aimerais que le programme le fasse pour moi CAD tracer la route vers mon poste directement. si tu connais les commandes en ms-dos ou autre, je les veux bien, car c raide à trouver ce genre de truque. sujet délicat car contourner un routeur peut être considéré comme du hacking, mais dans mon cas c juste pour ma culture perso. merci à vous @+

ps: http://www.delphifr.com/code.aspx?id=19040 dommage pour cette source elle m'aurai peut etre aidé ...

Commentaire de Nostaroth le 29/09/2007 19:13:30

Est il possible d'envoyer la capture sans fair de connexion/deconnexion, c'est a dire on se connecte une foi aprés c'est tout?

Repondez moi sil vou plait c'est important

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

besoin d'aide TCP indy 10 [ par Nero` ] Bonsoir à tous et toutes.J'ai un petit soucis avec les composants TCP de indy 10. j'explique:Je réalise un petit client avec le compo idtcpclient. J'e indy download [ par ced55957 ] bonjours à tous voila je voudrais recuperer un fichier "test.txt" sur mon serveur ftp avec un indy j'ai écris le bout de programme pour me connecter Debit download / upload d'une ligne internet [ par maxkweeger ] bonjour,Pourriez vous m'eguiller sur la creation d'un soft qui pourrer mesurer le debit d'une ligne internet toute les secondes en upload et download Tcp client indy onWork [ par kschn ] ben voila en fait le but c de faire un client server tcp avec indy en fait le client envoi un message au server et le server envoi une reponse au clie indy serveur TCP [ par templeofboom ] Bonjour je voudrais gérer des exception sur mon serveur TCP indy , en particulier celle qui indique "dépassement de thread de terminaison" l Probleme de stream [ par ewertheimer ] 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 : ClientSocket, ServerSocket Silence radio (sendstream) [ par Bastard60 ] 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 Pas deTWebBrowser dans Delphi édition personal [ par estra ] Bonjour,Je voudrais utiliser WebBrowser avec Dephi 7 ou 2005 en édition personnelle .Même après avoir installé Indy, pas de groupe ReceiveStream Comment [ par koaiz ] Salut les Pro J'esseye de tous les moyen d'envoyer une image avec une socket et j?ai reussi a la metre dans un stream et a l'envoyer avec sendStr Comment lire un stream avec clientsocket [ par koaiz ] Salut Comment lire une stream avec clientsocket si en l'envoi avec ServerSocket.socket.endStream plus on vie plus on apprend


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales