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 :

Les sockets sous les applications console


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Les sockets sous les applications console
    bonjours les amis , voila je suis un debuttant en programation , je cherche a cree un application console utilisant les socket sous delphi7 (non pas avec le composant indy) ; ce que je cherche exactement c de cree un client iRc sous dos :-) ca serais cool ! non ?

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Oué ! Se serait super cool !

    Par contre une application console n'est pas une appli DOS !
    Je te conseille ICS (http://www.overbyte.be) qui est une biblio. IP avec des exemples d'appli. consoles...

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 451
    Points
    28 451
    Par défaut
    Citation Envoyé par h4mz4 Voir le message
    bonjours les amis , voila je suis un debuttant en programation , je cherche a cree un application console utilisant les socket sous delphi7 (non pas avec le composant indy) ; ce que je cherche exactement c de cree un client iRc sous dos :-) ca serais cool ! non ?
    et quelle est la question ?

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    et quelle est la question ?
    Mais enfin, Paul, sa question est pourtant claire, c'est :
    ca serais cool ! non ?
    J'y ai d'ailleurs répondu par :
    Oué ! Se serait super cool !
    Moi quand je peux aider, je n'hésite pas...

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    ok les amis vous me faite rire :-D
    ma question cest comment faire ajouté une socketclient a une application consol ???

    voissi mon sript :

    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
    program Project1;
     
    uses
      Forms,
      ScktComp,
      SysUtils;
     
    //{$R *.res}
    {$APPTYPE CONSOLE}
     
    type Client= TClientSocket;
    var client1:client;
    begin
     
        client1.Port:=6667;
        client1.Host:='127.0.0.1';
        client1.Active:=true;
        client1.Open;
        readln;
      // application.Initialize;
    //  Application.Run;
    end.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    ps : je ne veut utilisez aucunne bibliotheque

  7. #7
    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
    Juste une remarque : le mode console de Windows n'est PAS le DOS. Les applications consoles restent uniquement exécutables sous Windows, donc l'intérêt de ton outil sera un peu limité, sauf pour les gens qui ne supportent pas les icônes sous Windows...

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    merci pour votre remarque
    ps : quant jai dit sous dos (je veut dir une application consol )
    comme tu m'a dit une application sans fenetre,
    mon but c'est de gagnier un peut d'espace car ma peuttite application n'a pas desoin de fenetre alors pour quoi metre une ?


    es qu'il a une perssonne qui peut correcte mon script ?





    -----------------------------------------------------------------------
    je suis desolez pour mes faute..............

  9. #9
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 290
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 290
    Points : 1 941
    Points
    1 941
    Par défaut
    Déjà, il manque la création de l'objet (et la libération).

    Ensuite, essaie d'abord de faire marcher ton application en mode fenetré, ça aidera beaucoup à débugguer, une fois cela fait, le passage en mode console sera assez simple.

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 451
    Points
    28 451
    Par défaut
    si tu ne veux pas de fenêtre, il suffit de ne pas en mettre, mais ce n'est pas pour cela qu'il faut faire une application console qui va crée une fenêtre...console

    sur un projet classique, supprime Unit1 et tu as une application Windows sans fenêtre

    sinon tu peux utiliser l'API Winsock directement

    Citation Envoyé par h4mz4 Voir le message
    merci pour votre remarque
    ps : quant jai dit sous dos (je veut dir une application consol )
    comme tu m'a dit une application sans fenetre,
    mon but c'est de gagnier un peut d'espace car ma peuttite application n'a pas desoin de fenetre alors pour quoi metre une ?


    es qu'il a une perssonne qui peut correcte mon script ?





    -----------------------------------------------------------------------
    je suis desolez pour mes faute..............

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 586
    Points : 25 254
    Points
    25 254
    Par défaut
    Lorsque l'on est débutant, on ne commence pas avec les composant TCP/IP avant il faut connaitre l'instanciation d'un objet (Create, Free), les gestionnaires d'évèmenent (OnConnect par exemple), savoir qu'une application c'est avant tout une boucle perpétuelle (le fameux run) ...

    tu peux le tester avec le chat fourni sur CD de Delphi 5 (celui de 6 est moins pratique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    program Client;
     
    uses
      ClientSocketClasses in 'ClientSocketClasses.pas';
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.Run;
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    unit ClientSocketClasses;
     
    interface
     
    uses Windows, Messages, Classes, SysUtils, ScktComp;
     
    type
      TClientApplication = class(TObject)
      private
        FSocket: TClientSocket;
        FStream: TStream;
        procedure OnConnectEventHandler(Sender: TObject; Socket: TCustomWinSocket);
      public
        destructor Destroy(); override;
     
        procedure Initialize();
        procedure Run();
      end;
     
    function Application(): TClientApplication;
     
    implementation
     
    { TClientApplication }
     
    { TClientApplication - Singleton }
     
    var
      _Application: TClientApplication = nil;
     
    function Application(): TClientApplication;
    begin
      if not Assigned(_Application) then
        _Application := TClientApplication.Create();
     
      Result := _Application;
    end;
     
    { TClientApplication - Constructeurs }
     
    destructor TClientApplication.Destroy();
    begin
      if Assigned(FStream) then
      begin
        FStream.Free();
        FStream := nil;
      end;
     
      if Assigned(FSocket) then
      begin
        FSocket.Free();
        FSocket := nil;
      end;
     
      inherited Destroy();
    end;
     
    { TClientApplication - Méthodes Publiques }
     
    procedure TClientApplication.Initialize;
    begin
      FSocket := TClientSocket.Create(nil);
      FSocket.Port := 6667;
      FSocket.Host := '127.0.0.1';
      FSocket.ClientType := ctBlocking;
      FSocket.OnConnect := OnConnectEventHandler;
      FSocket.Open();
    end;
     
    procedure TClientApplication.Run;
    var
      Msg: TMsg;
      Terminated: Boolean;
      ReadText: string;
      WriteText: string;
    begin
      Terminated := False;
     
      SetLength(ReadText, 1024);
      repeat
        WriteText := FormatDateTime('YYYY-MM-DD HH:NN:SS:ZZZ', Now());
        FStream.Write(WriteText[1], Length(WriteText));
     
        if FStream.Read(ReadText[1], Length(ReadText)) > 0 then
          Terminated := Pos('QUIT', ReadText) > 0;
      until Terminated;
    end;
     
    { TClientApplication - Méthodes Privées }
     
    procedure TClientApplication.OnConnectEventHandler(Sender: TObject; Socket: TCustomWinSocket);
    begin
      FStream := TWinSocketStream.Create(Socket, 1000);
    end;
     
    initialization
     
    finalization
      if Assigned(_Application) then
      begin
        _Application.Free();
        _Application := nil;
      end;
     
    end.

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    meci infiniment les amis .......
    desolez pour le retard , (problemme de connection)










    -----------------------------------------------------------------------
    quant je vois ........je suis un debutant....

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    program Project1;
    j'ai utiliser l'unité 'ClientSocketClasses.pas' mais elle m'afiche sans arret la date
    comment je peut utilise ce client pour envoyez le texte que je veut ???
    comme dans les socket client sendstring...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    uses
      Forms,
      ClientSocketClasses in 'ClientSocketClasses.pas';
      var socket1:TClientApplication;
     
    {$R *.res}
     
    begin
      socket1:=TClientApplication.Create;
      socket1.Initialize;
      socket1.Run;
      Application.Initialize;
      Application.Run;
    end.

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 586
    Points : 25 254
    Points
    25 254
    Par défaut
    Tu n'as pas lu le code !

    Il est inutile d'avoir un socket1 dans le DPR, tu as déjà un singleton (voir design patterns) qui s'appelle Application, lit bien l'unité ClientSocketClasses qui remplace TOTALEMENT l'objet Application: TApplication de l'unité Forms par un autre objet Application: TClientApplication ... si ton application doit être le plus discrète que possible, tu as tout ce qu'il faut (on est pas loin de faire un service ... mais quand tu seras un débutant avancé ... )

    Lit la méthode Run de l'unité ClientSocketClasses, tu verras pourquoi cela envoi la Date environ toutes les secondes (1000 milli-secondes ...)

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/06/2010, 16h33
  2. Réponses: 5
    Dernier message: 14/01/2010, 18h11
  3. Les threads et les sockets
    Par pier* dans le forum Développement
    Réponses: 4
    Dernier message: 09/01/2006, 11h44
  4. Les caractères dans une application console
    Par maximedrouet dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2005, 16h44

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