User: alciro    User
 Original    Translate to:  Deutsch  English  Français  中文  
 

Programación en C++ Builder

 Tableaux (tableaux)
 Pointeurs
3. Exemple de la classe en c + +
8. méthodes de la classe AnsiString
 C + +
 Paquets, de distribuer une application sans installation
 Exchange ou le tri des bulles
 Fonctions de chaîne string.h

12.1. Exemple TCP / IP chat

Chat formulaire exemple Socket TCP / IP

Considérations:

Établir un port de communication valable pour ServerSocket ClientSocket et Propriétés -> Port, comme 1024.

Ajouter un contrôle Panel StatusBar1 Propriétés -> Panneaux -> Ajout de nouveau.

main.cpp

 //------------------------------------------------ ---------------------------
# Include 
# Hdrstop Pragma

# Include "main.h"
//------------------------------------------------ ---------------------------
# Pragma lien "ScktComp"
# Ressources Pragma "*. dfm"
TChatForm * ChatForm;
//------------------------------------------------ ---------------------------
__fastcall TChatForm:: TChatForm (Propriétaire * TComponent): TForm (Owner)
{
}
//------------------------------------------------ ---------------------------
/ / Activer Socket Server et spécifier le mode d'écoute
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: CheckBoxListenClick (TObject * Sender)
{
  / / CheckBoxList-> Checked = CheckBoxList-> Checked!;
  if (CheckBoxList-> Checked) {
     ClientSocket-> Active = false;
     ServerSocket-> Active = true;
     StatusBar1-> Articles Panneaux-> [0] - Texte> = «À l'écoute ...";
  Else {}
     if (ServerSocket-> Active) {
        ServerSocket-> Active = false;
     }
     StatusBar1-> Articles Panneaux-> [0] - Texte> = "";
  }
}
//------------------------------------------------ ---------------------------
/ / Connexion à l'hôte spécifié
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: ConnectClick (TObject * Sender)
{
  / / Si une connexion est active, il doit fermer avant d'établir un nouveau
  if (ClientSocket-> Active) {
      ClientSocket-> Active = false;
  }
  / / Se connecter au serveur
  if (InputQuery ("informatique de se connecter à", "Nom Adresse:", serveur)) {/ / Demander à l'IP du serveur
     if (Server.Length ()> 0) {
        ClientSocket-> Host = Server / / Spécifiez le IP de l'hôte
        ClientSocket-> Active = true, / / ​​Se connecter au serveur
        / / CheckBoxList-> Checked = false; / / Fermer le serveur et quitter le mode d'écoute
        / / Si vous arrêtez le serveur, vous ne pouvez pas établir une connexion à localhost
     }
  }
}
//------------------------------------------------ ---------------------------
/ / Fermer la sortie et de la communication
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: ExitClick (TObject * Sender)
{
  Fermer ServerSocket-> (); / / Fermer le Socket Server
  Fermer ClientSocket-> (); / / Fermeture de la socket client
  Close (); / Programme / Sortie
}
//------------------------------------------------ ---------------------------
/ / Transmission de données
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: Memo1KeyDown (TObject * Sender, WORD & Key, TShiftState Shift)
{
  if (Key == VK_RETURN) {/ / Si vous appuyez sur le retour chariot
     / / Si nous agissons comme un serveur, un client s'est connecté à nous
     if (IsServer) {
         / / Envoyer la ligne courante
         ServerSocket-> Connexions Socket-> [0] -> paramètre texteAEnvoyer (Memo1-> Lines-> Strings [Memo1-> Lines-> Count - 1]);
     }
     / / Si nous agissons en tant que client, vous vous connectez à un serveur
     else {
         / / Envoyer la ligne courante
         ClientSocket-> Socket-> paramètre texteAEnvoyer (Memo1-> Lines-> Strings [Memo1-> Lines-> Count -1]);
     }
  }
}
//------------------------------------------------ ---------------------------
/ / Lors du démarrage du programme
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: FormCreate (TObject * Sender)
{
  CheckBoxList-> Checked = true, / / ​​Activer Socket et entrez le mode d'écoute
}
//------------------------------------------------ ---------------------------
/ / Lors de la connexion
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketConnect (TObject * Sender, TCustomWinSocket * Socket)
{
  StatusBar1-> Articles Panneaux-> [0] - Texte> = "Se connecter à:" + RemoteHost Socket->;
} 

 //------------------------------------------------ ---------------------------
/ / Arrêt ou déconnecter la connexion
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: DisconnectClick (TObject * Sender)
{
  ClientSocket-> Active = false; / / Fermeture de la connexion au serveur
  ServerSocket-> Active = true, / / ​​Activer et entrez ServerSocket mode d'écoute
  StatusBar1-> Articles Panneaux-> [0] - Texte> = «À l'écoute ...";
}
//------------------------------------------------ ---------------------------
/ / Se produit quand un socket client doit lire la connexion de socket.
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: ClientSocketRead (TObject * Sender, TCustomWinSocket * Socket)
{
  / / Lorsque le serveur envoie ces données au coefficient et le processus a
  Memo2-> Lines-> Add (Socket-> ReceiveText ()) / / Ajouter des données à la réception de la mémoire
}
//------------------------------------------------ ---------------------------
/ / Se produit lorsque la socket serveur doit lire les informations à partir d'un socket client.
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: ServerSocketClientRead (TObject * Sender, TCustomWinSocket * Socket)
{
  / / Lorsque le client envoie des données vers le serveur et que le processus a
  Memo2-> Lines-> Add (Socket-> ReceiveText ()) / / Ajouter des données à la réception de la mémoire
}
//------------------------------------------------ ---------------------------
/ / Il se produit sur un serveur socket immédiatement après l'acceptation de la connexion à un socket client.
//------------------------------------------------ ---------------------------
TChatForm void __fastcall: ServerSocketAccept (TObject * Sender, TCustomWinSocket * Socket)
{
  IsServer = true, / / ​​en tant que serveur
  StatusBar1-> Articles Panneaux-> [0] - Texte> = "Se connecter à:" + RemoteAddress Socket->;
}
//------------------------------------------------ ---------------------------
/ / Se produit quand une connexion client complet socket acceptée par le socket serveur.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ServerSocketClientConnect (TObject * Sender, TCustomWinSocket * Socket)
{
  Memo2-> Lines-> Clear (); / / Nettoyer la note de service de données
}
//------------------------------------------------ ---------------------------
/ / Il se produit juste avant une connexion socket client fermé à un serveur.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketDisconnect (TObject * Sender, TCustomWinSocket * Socket)
{
  / / CheckBoxList-> Checked = true, / Activer / Socket et entrez le mode d'écoute
  / / Seulement si c'est pour le serveur quand il agit comme un client
}
//------------------------------------------------ ---------------------------
/ / Lorsque la connexion socket échoue, l'utilisation, ou fermer une connexion.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketError (TObject * Sender, TCustomWinSocket * Socket, TErrorEvent ErrorEvent, int & ErrorCode)
{
  Memo2-> Lines-> Add ("Erreur de connexion à:" + Server);
  ErrorCode = 0;
}
//------------------------------------------------ ---------------------------
/ / Se produit lorsque la connexion à un socket client est fermé.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ServerSocketClientDisconnect (TObject * Sender, TCustomWinSocket * Socket)
{
  StatusBar1-> Articles Panneaux-> [0] - Texte> = «À l'écoute ...";
} 

main.h

 //------------------------------------------------ --------------------------- 
# Ifndef mainha
# Définir mainha
//------------------------------------------------ ---------------------------
# Inclure <Classes.hpp>
# Inclure <Controls.hpp>
# Inclure <StdCtrls.hpp>
# Inclure <Forms.hpp>
# Include "ScktComp.hpp"
# Inclure <Buttons.hpp>
# Inclure <ComCtrls.hpp>
# Inclure <ExtCtrls.hpp>
# Inclure <Menus.hpp>
//------------------------------------------------ ---------------------------
classe TChatForm: TForm public
{
__published: / / IDE gérés Composants
TStatusBar StatusBar1 *;
TPanel Panel1 *;
TMemo Memo1 *;
TMemo Memo2 *;
TServerSocket * ServerSocket;
TClientSocket * ClientSocket;
* Connectez TButton;
TCheckBox * CheckBoxList;
* Débranchez TButton;
TButton * sortie;
void __fastcall Memo1KeyDown (TObject * Sender, WORD & Key,
Maj TShiftState);
void __fastcall FormCreate (TObject * Sender);
void __fastcall ClientSocketConnect (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall ClientSocketDisconnect (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall ClientSocketRead (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall ServerSocketClientRead (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall ServerSocketAccept (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall ServerSocketClientConnect (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall ClientSocketError (TObject * Sender,
TCustomWinSocket * Socket, TErrorEvent ErrorEvent, int & ErrorCode);
void __fastcall ServerSocketClientDisconnect (TObject * Sender,
TCustomWinSocket * Socket);
void __fastcall CheckBoxListenClick (TObject * Sender);
void __fastcall ConnectClick (TObject * Sender);
void __fastcall DisconnectClick (TObject * Sender);
void __fastcall ExitClick (TObject * Sender);
déclarations / / utilisateur: privé
déclarations / / utilisateur: public
IsServer bool / / agir en tant que serveur
Server String / / IP pour se connecter au serveur
TChatForm __fastcall (Propriétaire * TComponent);
};

//------------------------------------------------ ---------------------------
extern ChatForm * TChatForm;
//------------------------------------------------ ---------------------------
# Endif

Loading
copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |