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 :

Envoyer une var. typée avec TServeurSocket et TClientSocket


Sujet :

Web & réseau Delphi

  1. #1
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut Envoyer une var. typée avec TServeurSocket et TClientSocket
    Bonjour à tous,

    Je voudrais savoir comment on fait pour pouvoir envoyer une variable typée avec TServeurSocket et TClientSocket ...

    Merci d'avance,

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Qu'est-ce que tu entends par "une variable typée"
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Une variable qui a un type qu'on a créé nous-même ...

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Ben, je vois pas ce qui te gêne. Il suffit jsute que ton récepteur connaisse le type.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  5. #5
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Ah bon ... dsl

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Non, il a raison, ce n'est pas si évident quand on a pas l'habitude...

    Dis moi, t'est tu déjà familiarisé avec le fonctionnement des Stream (TMemoryStreanm, TFileStream), en particulier leurs méthodes Write et Read, ou avec la fonction getmem par exemple ?

    Sinon, j'imagine que tu as réussi à envoyer du texte avec SendText, exact ?
    Bidouilleuse Delphi

  7. #7
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    C'est quoi le "Stream" ?

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Matt2094
    C'est quoi le "Stream" ?


    Je m'en doutais...

    Bon, on commence par le début : as tu trouvé les procédure SendBuf et ReceiveBuf dans tes composants TServerSocket et TClientSocket ?

    As tu réussis à envoyer du texte avec SendText et ReceiveText (déjà, avoir commencé par ça, c'est un bon début, sinon on est mal barré )
    Bidouilleuse Delphi

  9. #9
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    J'ai déjà réussi à envoyer du texte ...
    Par contre, j'ai pas trouver ces deux fonctions ...

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Donc, en admettant que tu aies suivi le tuto là :
    http://delphipage.free.fr/sockets.html

    Tu as du utiliser ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    ClientSocket1.Socket.SendText(Edit4.Text);
    Memo1.Lines.Add('Informations envoyées au serveur');
    end;
    Pour envoyer des données, n'importe lesquelles (par exemple un Integer, un TPoint, un type enregistrement (Record) de ton crû, un tableau), il te faut utiliser la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClientSocket1.Socket.SendBuft(var Buf;Count:Integer);
    A la place de Buf : tu mets ta variable.
    A la place de Count : tu mets sa taille en octets

    Admettons que je veuille envoyer un Integer (i par exemple) :
    - Il me faut sa taille, qui m'est donnée par : SizeOf(Integer)
    - Et j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button3Click(Sender: TObject);
    var i:Integer;
    begin
      i:=2006;
      ClientSocket1.Socket.SendBuf(i,SizeOf(Integer));
      Memo1.Lines.Add('Informations envoyées au serveur');
    end;
    De la même manière, pour envoyer un boolean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var b:Boolean;
    ...
    b:=true;
    ClientSocket1.Socket.SendBuf(b,SizeOf(boolean));
    Un TPoint :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var MonPoint:TPoint;
    ...
    MonPoint.x:=50;
    MonPoint.y:=30;
    ClientSocket1.Socket.SendBuf(MonPoint,SizeOf(TPoint));
    Un tableau d'entiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    type TMonTableau=array[0..50] of integer;
    var MonTableau:TMonTableau;
    ...
    ClientSocket1.Socket.SendBuf(MonTableau,SizeOf(TMonTableau));
    Un record de ton crû :
    Là il faut faire attention, si ton enregistrement contient des strings (ça aurait été TROP simple sinon), il faut que tu leur donne une longueur bien définie, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type
      TJoueur=record
                      Pseudonyme:string[50]; //<-- là !
                      Vies:integer;
                      CaseChoisie:TPoint;
                   end;
    Ensuite, c'est comme le reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var UnJoueur:TJoueur;
    ...
    ClientSocket1.Socket.SendBuf(UnJoueur,SizeOf(TJoueur));
    [/code]

    Pour recevoir les données, c'est ReceiveBuf(), dans lequel tu indiques :
    - la variable à remplir pour récupéerer les données.
    - la longueur des données à recevoir.

    Tu suis là ? Tu me dis quand je peux passer à la suite...
    Bidouilleuse Delphi

  11. #11
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    J'ai tout compris! merci beaucoup!

    P.S : c'était pas la peine de faire plus d'une page ... lol

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Oui, mais au moins tu as compris, si j'en avais mis franchement moins, ne te connaissant pas, tu n'aurais peut-être pas tout compris. Tout le monde ne pige pas aussi vite que toi

    Celà dit, c'est tout simple quand tu envoies toujours le même type de données, le serveur, ou le client qui reçoit SAIT à qui s'attendre.

    Mais imagine que parfois tu es besoin d'envoyer Un TPoint, et parfois un TJoueur, à la réception ton programme doit d'abord être informé de ce qui l'attend. Vois tu ce que je veux dire ?
    Bidouilleuse Delphi

  13. #13
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Oui, bha il suffit d'envoyer un premier méssage qui éxplique le type de données qui va être envoyée ...

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Matt2094
    Oui, bha il suffit d'envoyer un premier méssage qui éxplique le type de données qui va être envoyée ...
    Exact

    En admettant que tu sois en mode bloquant
    Parce que sinon, qui te dis, en mode non bloquant, que le paquet de données ne va pas arriver avant l'info "type de données"
    Bidouilleuse Delphi

  15. #15
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    lol

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    PS: j'ai édité mon message précédent
    Bidouilleuse Delphi

  17. #17
    En attente de confirmation mail Avatar de Matt2094
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 295
    Points : 237
    Points
    237
    Par défaut
    Bon, on va dire que si j'ai un problème, je poste un message ...

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

Discussions similaires

  1. Envoyer une pièce jointe avec mail
    Par oc_alex86 dans le forum Réseau
    Réponses: 1
    Dernier message: 15/01/2009, 23h21
  2. Envoyer une copie automatiquement avec Outlook
    Par busy999 dans le forum Outlook
    Réponses: 2
    Dernier message: 22/07/2006, 11h16
  3. Réponses: 13
    Dernier message: 01/02/2006, 12h00
  4. [GD] Envoyer une image générée avec GD par mail
    Par firejocker dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/12/2005, 15h42
  5. Transfert de fichier avec TServeurSocket et TClientSocket
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/09/2005, 17h53

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