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

Delphi Discussion :

Socket et envoi d'image


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut Socket et envoi d'image
    salut les devloppeurs

    je suis entraine de realiser une application client/serveur qui sert à envoyer des images de la part du client vers le serveur, et le stockés dan ce dernier dans une bdd.

    mon pb est coment je peux envoyer une image avec TClientSocket et comment je peux la récupérrer avec TServerSocket?.


    merci a l'avance.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    j'étais persuadé d'avoir posté un truc vite fair sur ce forum, bon je le remet, un bout de code qui pourra t'inspirer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    procedure TFrmShowJPEG.BtnSendClick(Sender: TObject);
    var
       Index: Integer;
       DummyJPEg: TJPEGImage;
       DummyBitmap: TBitmap;
       DummyStream: TMemoryStream;
    begin
       DummyJPEg := TJPEGImage.Create();
       try
          DummyBitmap := TBitmap.Create();
          try
             DummyStream := TMemoryStream.Create();
             try
                DummyBitmap.Assign(ImageWithDate.Picture.Bitmap);
                DummyBitmap.Canvas.TextOut(0, 0, 'Copy');
                // DummyBitmap.SaveToStream(DummyStream);
                DummyJPEg.Assign(DummyBitmap);
                DummyJPEg.SaveToStream(DummyStream);
     
                if DummyStream.Size > 0 then
                begin
                   for Index := 0 to ServerSocketJPEG.Socket.ActiveConnections - 1 do
                   begin
                      if ServerSocketJPEG.Socket.Connections[Index].Connected then
                         ServerSocketJPEG.Socket.Connections[Index].SendBuf(DummyStream.Memory^, DummyStream.Size);
                         begin
                            lblRead.Caption := 'Envoyé ...';
                         end;
                         Application.ProcessMessages();
                   end;
                end else
                begin
                   lblRead.Caption := 'Stream Vide ...';
                end;
     
             finally
                DummyStream.Free(); // Voir l'aide de Delphi pour le TCustomWinSocket.SendStream
             end;
          finally
             DummyBitmap.Free();
          end;
       finally
          DummyJPEg.Free();
       end;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    procedure TFrmShowJPEG.ClientSocketJPEGRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
       DummyStream: TMemoryStream;
       DummyJPEg: TJPEGImage;
       Count, TotalCount: Integer;
       Buffer: Pointer;
    begin
       ClientSocketJPEG.OnRead := nil;
       try
         lblRead.Caption := 'Réception ...'; lblRead.Refresh();
         try
            DummyStream := TMemoryStream.Create();
            try
               Count := 0;
               TotalCount := 0;
     
               repeat
                 lblRead.Caption := 'Réception ... ' + IntToStr(Socket.ReceiveLength) + ' / ' + IntToStr(TotalCount) + '                 '; lblRead.Refresh();
                 DummyStream.SetSize(TotalCount+Socket.ReceiveLength);
                 Count := Socket.ReceiveBuf(Pointer(Integer(DummyStream.Memory)+TotalCount)^, Socket.ReceiveLength);
                 Inc(TotalCount, Count);
     
                 MemoLog.Lines.Add(lblRead.Caption);
                 Application.ProcessMessages();
               until Count <= 0;
     
               DummyJPEg := TJPEGImage.Create();
               try
                  DummyJPEg.LoadFromStream(DummyStream);
                  ImageRead.Picture.Bitmap.Assign(DummyJPEg);
     
               finally
                  DummyJPEg.Free();
               end;
            finally
               DummyStream.Free();
            end;
     
            lblRead.Caption := 'Terminé !';
         except
            lblRead.Caption := 'Except : ' + Exception(ExceptObject).Message;
         end;
      finally
         ClientSocketJPEG.OnRead := ClientSocketJPEGRead;
      end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    avec SendBuf et ReceiveBuf, jette un oeil à ce fil de discussion :
    http://www.developpez.net/forums/sho...d.php?t=117622

    Là aussi, ça peut t'aider :
    http://developpez.net/forums/showthread.php?t=117342

    là ( ) :
    http://www.developpez.net/forums/sho...d.php?t=230550

    Et surtout ceci :
    http://www.developpez.net/forums/sho...d.php?t=152203

    Ceci :
    http://www.developpez.net/forums/sho...d.php?t=139071

    Excuses moi de n'avoir pas réécris ce que j'ai déjà écrit dans ces fil de discussion.
    En tout cas, bon courage

Discussions similaires

  1. [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
  2. [Socket] Probleme envois de message
    Par Pierrick584 dans le forum C++
    Réponses: 12
    Dernier message: 28/06/2006, 19h07
  3. Réponses: 3
    Dernier message: 21/06/2006, 14h31
  4. [MySQL] Envoi d'images par formulaire et post-traitement
    Par mathieu7497 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/04/2006, 13h58
  5. [MySQL] Envoi d'image ds ma base ?
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/02/2006, 18h51

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