IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

image / socket


Sujet :

Web & réseau Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut image / socket
    bon voila je veux faire un outil d'administration dans le style de vnc, je prend donc un screen sur la partie serveur, je la stoque dans un stream, j'envois le stream par socket, je récupere le stream sur le client et je recharge l'image qui es contenue dans le stream

    je n'ai aucune erreur lors de la compilation mais lors des teste, j'ai des erreur mémoire. voici mon code :

    coté serveur :

    définition de toutes les variables suivit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TempStream :=TMemoryStream.Create;
    ImageBureau.Bitmap.Width := Screen.Width; ImageBureau.Bitmap.Height := Screen.Height;
    BitBlt(ImageBureau.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,
    GetDC(GetDesktopWindow),0,0,SrcCopy);
    ImageBureau.Bitmap.SaveToStream(TempStream);
    serversocket1.Socket.SendStream(TempStream);

    et coté client :

    définition de toutes les variables suivit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    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);
    ImageBureau.Bitmap.LoadFromStream(tempstream);
    Image5.Picture.Bitmap:=ImageBureau.Bitmap;
    end;
    et le message d'erreur ce produit actuellement sur le serveur et est le suivant :
    Le projet project1.exe a provoqué une classe d'exception EAccessViolation avec le message 'Violation d'acces à l'adresse 0041EF23 dans le module 'project1.exe'. Lecture de l'adresse 0000000C'. Processus stoppé. Utilisez pas-à-pas ou executer pour continuer.


    merci d'avance

    Balises de code ajoutées par Pierre Castelain.
    Pensez-y à l'avenir

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Tu peux t'inspirer de ce projet :

    http://delphi.about.com/library/weekly/aa012004a.htm
    "It's more fun to compute !"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut question
    tu n'a pas le meme mais qui a la place d'utiliser les composant indy utiliserait les composant clientsocket et serveursocket par hazard ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    non c'est bon jvais refaire mon application avec les indy a la place lol

    merci pour tout

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    suite a l'exemple que l'on m'a fourni, j'ai recréer mon application en utilisant les composant indy et j'en suis heureux, seulement, j'ai toujours un probleme avec les images. Pour des raisons pratiques, je suis obliger de faire passer le screen du TIdTCPServer au TIdTCPClient, je ne peux pas faire l'inverse. Hors l'exemple donnée sur ce forum fait l'inverse. Seulement je ne peux pas envoyer de stream avec TIdTCPServer.

    Comment dois-je procéder ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Réception et sauvegarde image Socket [WDM17]
    Par NicoSab dans le forum WinDev
    Réponses: 4
    Dernier message: 01/07/2014, 17h08
  2. [NIO] envoie d'image à plusieurs client via socket
    Par robert_trudel dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/10/2006, 23h11
  3. Sockets + Sauvegarde de fichiers (mp3, images...)
    Par sqwam71 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 21/05/2006, 11h39
  4. Transfert d'une image par socket stream
    Par francky23012301 dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2005, 16h06
  5. [Socket] Rafraichissement lent de l'image
    Par keil dans le forum Multimédia
    Réponses: 9
    Dernier message: 26/10/2005, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo