Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

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é: 6 585 / 1 420

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Pour les "Membres Club", vous pouvez 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.

Commentaires et avis

signaler à un administrateur
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!

signaler à un administrateur
Commentaire de taye78 le 04/10/2004 20:44:17

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

signaler à un administrateur
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 :(

signaler à un administrateur
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.... :( )

signaler à un administrateur
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 :-)

signaler à un administrateur
Commentaire de Inekman le 05/10/2004 12:39:02

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

signaler à un administrateur
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.

signaler à un administrateur
Commentaire de cali70 le 06/10/2004 21:21:19

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

signaler à un administrateur
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 ...

signaler à un administrateur
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...

signaler à un administrateur
Commentaire de Inekman le 09/10/2004 21:14:58

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

signaler à un administrateur
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... +++

signaler à un administrateur
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 !

signaler à un administrateur
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. ^^

signaler à un administrateur
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

signaler à un administrateur
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??

signaler à un administrateur
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.

signaler à un administrateur
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

signaler à un administrateur
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.

signaler à un administrateur
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!!!!

signaler à un administrateur
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 !!!

signaler à un administrateur
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+

signaler à un administrateur
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é ...

signaler à un administrateur
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 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 lire ses mails avec indy [ par saravana ] bonjour a tousj'ai un petit souci avec indyje recois la liste de mes mails et j'ai fait en sorte douvrir le message selectioné dans un richedit m


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.