begin process at 2012 02 05 02:20:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > TEL NET

TEL NET


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Débutant Date de création :08/01/2002 Date de mise à jour :08/01/2002 22:29:36 Vu / téléchargé :6 567 / 552

Auteur : aKheNathOn

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Sur le même pricipe que tel net ... on dit le nom d'un serveur , on en choisit un port ... puis on commence à parler avec le server ...

Le probléme c'est que je viens tout juste de débarquer sur Delphi ... J'en avais fait avant mais jamais sur du socket ... Donc veuillez me dire si mon code ne peut être plus optimisé ... surtout la gestion de recetion du texte du serveur ... Ce que je viens de faire marche niquel ... mais ça me semble chelou d'utiliser un timer à la place d'un evenement pour intercepter les messages du serveur ....

Bonne prog à tous =)

AKH.

Source

  • {
  • Le code n'a pas trés grand intérét mais bon ...
  • Puisqu'il le faut .... =)
  • Allez cependant voir le zip !
  • }
  • var
  • Form1: TForm1;
  • Recept: String;
  • implementation
  • {$R *.dfm}
  • procedure TForm1.Button1Click(Sender: TObject);
  • begin
  • ClientSocket1.Host:=Edit1.Text;
  • // En vb cela revient au remotehost
  • ClientSocket1.Port:=StrToInt(Edit2.Text);
  • // En vb c'est le Val(String) qui est remplacé par StrToInt
  • ClientSocket1.Open;
  • // Ceci c'est la fonction Connect sauf qu'en delphi
  • // on ne peux pas lui rajoutter d'autres paramétres mais
  • // juste en faire l'appél ....
  • end;
  • procedure TForm1.ClientSocket1Connect(Sender: TObject;
  • Socket: TCustomWinSocket);
  • begin
  • RichEdit1.Text:=RichEdit1.Text+chr(13)+chr(10)+'Connecté au serveur '+Edit1.Text;
  • // Pour inscrire une zone de texte c'est simple
  • // au lieu des guillemets c'est les ' ' ...
  • // au lieu de la chaîne & on mets le +
  • end;
  • procedure TForm1.BitBtn1Click(Sender: TObject);
  • begin
  • RichEdit1.Text:=RichEdit1.Text+chr(13)+chr(10)+'Déconnection du Serveur '+ClientSocket1.Host;
  • Clientsocket1.close;
  • richedit1.SelStart := richedit1.GetTextLen;
  • end;
  • procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
  • begin
  • If Key = chr(13) then
  • begin
  • clientsocket1.Socket.SendText(Edit3.Text+chr(13)+chr(10));
  • RichEdit1.Text := RichEdit1.Text+chr(13)+chr(10)+'Client:'+Edit3.Text;
  • Edit3.Text:='';
  • richedit1.SelStart := richedit1.GetTextLen;
  • end;
  • end;
  • procedure TForm1.Timer1Timer(Sender: TObject);
  • begin
  • Recept:=clientsocket1.Socket.ReceiveText;
  • if Recept <> '' then
  • begin
  • RichEdit1.Text := RichEdit1.Text+chr(13)+chr(10)+'Server:'+Recept;
  • richedit1.SelStart := richedit1.GetTextLen;
  • end;
  • end;
  • procedure TForm1.Button2Click(Sender: TObject);
  • begin
  • Application.Terminate;
  • end;
  • end.
{
Le code n'a pas trés grand intérét mais bon ...
Puisqu'il le faut .... =)
Allez cependant voir le zip !

}

var
  Form1: TForm1;
  Recept: String;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Host:=Edit1.Text;
// En vb cela revient au remotehost
ClientSocket1.Port:=StrToInt(Edit2.Text);
// En vb c'est le Val(String) qui est remplacé par StrToInt
ClientSocket1.Open;
// Ceci c'est la fonction Connect sauf qu'en delphi
// on ne peux pas lui rajoutter d'autres paramétres mais
// juste en faire l'appél ....
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     RichEdit1.Text:=RichEdit1.Text+chr(13)+chr(10)+'Connecté au serveur '+Edit1.Text;
// Pour inscrire une zone de texte c'est simple
// au lieu des guillemets c'est les  ' ' ...
// au lieu de la chaîne & on mets le +
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
     RichEdit1.Text:=RichEdit1.Text+chr(13)+chr(10)+'Déconnection du Serveur '+ClientSocket1.Host;
     Clientsocket1.close;
     richedit1.SelStart := richedit1.GetTextLen;
end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
If Key = chr(13) then
begin
clientsocket1.Socket.SendText(Edit3.Text+chr(13)+chr(10));
RichEdit1.Text := RichEdit1.Text+chr(13)+chr(10)+'Client:'+Edit3.Text;
Edit3.Text:='';
richedit1.SelStart := richedit1.GetTextLen;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Recept:=clientsocket1.Socket.ReceiveText;
if Recept  <> '' then
begin
   RichEdit1.Text := RichEdit1.Text+chr(13)+chr(10)+'Server:'+Recept;
   richedit1.SelStart := richedit1.GetTextLen;
end;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;

end. 

 Conclusion

Voilà ... ouf ! Enfin , mon premier prog en Delphi =) ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • telnet.~dfmTélécharger ce fichier [Réservé aux membres club]8 565 octets
  • telnet.~pasTélécharger ce fichier [Réservé aux membres club]2 684 octets
  • telnet.dcuTélécharger ce fichier [Réservé aux membres club]6 866 octets
  • telnet.dfmTélécharger ce fichier [Réservé aux membres club]8 565 octets
  • telnet.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 684 octets
  • TelNet1.~dprTélécharger ce fichier [Réservé aux membres club]189 octets
  • TelNet1.cfgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier386 octets
  • TelNet1.dofTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 060 octets
  • TelNet1.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier189 octets
  • TelNet1.resTélécharger ce fichier [Réservé aux membres club]876 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture PETITE APPLICATION DE TCHAT DANS UN RÉSEAU LOCALE par benimen
Source avec Zip Source avec une capture LOG DE PING POUR SURVEILLER LA QUALITÉ D'UNE CONNECTION par PhilLU
Source avec Zip GET IP AVEC INDY par Gerard
Source avec Zip GCS-FACEBOOK par pinkfloydhighopes
Source avec Zip Source avec une capture PINGNOW ADRESSE IP par mekhmoukhs

Commentaires et avis

Commentaire de aKheNathOn le 08/01/2002 22:43:58

Contactez-moi si vous avez des conséils pour optimiser le code

Commentaire de viper le 13/01/2002 23:28:27

Au lieu d'utiliser un timer, tu dois avoir sur ton ClientSocket et ton ServeurSocket un  evenement : OnClientRead et OnServerRead.

Donc pour le serveur, met ce code la : ( moi je fais ca avec un memo donc )
Memo.Lines.Add('Client : ' + Socket.ReceiveText);

Et pour le client je te laisse faire les modifs.

Et voila...

Commentaire de aKheNathOn le 14/01/2002 18:15:48

Merci , je suis nouveau donc je nage un peu beaucoup ... alors c'est la merde pour retrouver mes marques ...

Commentaire de Laskar le 19/10/2003 15:51:28

Ton code ne marche !
J'utilise Delphi 7.0 et, au moment de charger le source, Delphi me dit : Classe TClientSocket non trouvée ...

keskesavedire ?

Commentaire de aKheNathOn le 19/10/2003 18:26:52

Ben ça veut dire que sous Delphi 7.0 Ils utilisent pas le même ocx que celui que j'utilise, donc en gros t'as pas ce composant d'installé avec la V7 ... De toute façon d'aprés ce que j'ai compris le delphi 7.0 est une version .net, donc je te conséille comme même de downloader le delphi 6.0.

Bonne prog et à +

Commentaire de Laskar le 21/10/2003 09:37:32

aKheNathOn, j'ai trouvé qu'il était possible d'installer le composant qui se trouve dans le répertoire bin. Il s'appelle dclsocket.bpl.
Ca marche ...

Commentaire de acce le 09/06/2004 00:29:21

Lol Amusant comme Source. Sufit de trouver un serveur.. Meme si tout les sockets Delphi se ressemblent et peuvent  pratiquement tous etre joint...

Bon continu comme ca et fait un bon chat ^^.

Commentaire de IV4 le 30/04/2006 17:42:00

Utilise un timer c'est pas top, le mieu c'est de faire un object de type CReceivingDate = class(thread)....

Comme ca tu peu avoir un thread externe qui reagit a la reception de donnée, ceci ne bloquant pas ton appli
Ensuit tu crée des evenement que le thread appel du genre l'ensemble du thread en simple donne:

pReceivedInfo = procedure(Buf: string) of object;
property OnReceivedData: pReceivedInfo read FReceivedInfo write FReceivedInfo;

  CReceiveData = class(TThread)
    TcpCon: TTcpClient;

    FReceivedInfo : pReceivedInfo;

    constructor Create(Host: string;Port: integer);
    procedure Execute(); override;
    property OnReceivedData: pReceivedInfo read FReceivedInfo write FReceivedInfo;
  end;

  constructor CReceiveData.Create(Host: string;Port: integer);
  begin
    inherited Create(false);
    FreeOnTerminate := True;
    Priority := tpLower;
    TcpCon := TTcpClient.Create(nil);
    TcpCon.RemoteHost := Host;
    TcpCon.RemotePort := Port;
    TcpCon.Connect;
  end;

procedure Execute(); override;
var
buf: string;
L: longint;
begin
  while not TerminateurDuThread do begin
      if TcpCon.Connected then begin
        DataArrived:=false;
        TcpCon.ReceiveBuf(L,4);
        TcpCon.ReceiveBuf(Buf[1],L);

        if Assigned(OnReceivedData) then
          OnReceivedData(Buf);
      end;
    end;

Le hic c'est qu'il faut connaitre la taille de la reception, en général au debut d'une reception il y a les 4 1er octect qui sont pour dire la taille du flux arrivant, donc stock dans le L
Ainssi ce thread reste bloque sur TcpCon.ReceiveBuf(L,4) Tant que pas donnée rentre d'ou il est très important d'en faire un thread sinon toute l'appli ce bloque, et voila t'a un evenement De reception ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales