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

Programación en C++ Builder

 Arrays (Arrays)
 Zeiger
3. Beispiel Klasse in C + +
8. AnsiString Klasse Methoden
 C + +-Projekte
 Pakete, verteilen eine Anwendung ohne Installation
 Börse sortieren oder Blase
 Zeichenfolgenfunktionen string.h

12.1. Beispiel TCP / IP-Chat

Chat Form Socket Beispiel TCP / IP

Überlegungen:

Aufbau eines Kommunikations-Port gültig für ServerSocket ClientSocket und Eigenschaften -> Port wie 1024.

Fügen Sie ein Panel-Steuerelement StatusBar1 Eigenschaften -> Panels -> Neu hinzufügen.

main.cpp

 //------------------------------------------------ ---------------------------
# Include 
# Pragma hdrstop

# Include "main.h"
//------------------------------------------------ ---------------------------
# Pragma link "ScktComp"
# Pragma resource "*. dfm"
TChatForm * ChatForm;
//------------------------------------------------ ---------------------------
TChatForm __fastcall: TChatForm (TComponent * Owner): TForm (Eigentümer)
{
}
//------------------------------------------------ ---------------------------
/ / Enable-Socket-Server und geben Sie den Wiedergabemodus
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: CheckBoxListenClick (TObject * Sender)
{
  / / CheckBoxList-> Checked = CheckBoxList-> Checked!;
  if (CheckBoxList-> Checked) {
     ClientSocket-> Active = false;
     ServerSocket-> Active = true;
     StatusBar1-> Panels-> Items [0] -> text = "Listening ...";
  Else {}
     if (ServerSocket-> Active) {
        ServerSocket-> Active = false;
     }
     StatusBar1-> Panels-> Items [0] -> Text = "";
  }
}
//------------------------------------------------ ---------------------------
/ / An den angegebenen Host verbinden
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ConnectClick (TObject * Sender)
{
  / / Wenn eine Verbindung aktiv ist, muss es vor der Gründung der Nähe ein neues
  if (ClientSocket-> Active) {
      ClientSocket-> Active = false;
  }
  / / Mit Server verbinden
  if (InputQuery ("Computer zu verbinden", "Adresse Name:" Server)) {/ / Fragen an den Server-IP
     if (Server.Length ()> 0) {
        ClientSocket-> Host = Server / / Geben Sie die Host-IP
        ClientSocket-> Active = true, / / ​​Mit Server verbinden
        / / CheckBoxList-> Checked = false; / / Schließen Sie den Server und lassen Sie den Wiedergabemodus
        / / Wenn Sie den Server stoppen, können Sie keine Verbindung zu localhost
     }
  }
}
//------------------------------------------------ ---------------------------
/ / Schließen und beenden Sie die Kommunikation
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ExitClick (TObject * Sender)
{
  ServerSocket-> Close (); / / Schließen der Socket Server
  ClientSocket-> Close (); / / Schließen der Socket Client
  Close (); / / Programm beenden
}
//------------------------------------------------ ---------------------------
/ / Sendedaten
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: Memo1KeyDown (TObject * Sender, WORD & Key, TShiftState Shift)
{
  if (Key == VK_RETURN) {/ / Wenn drückte den Wagenrücklauf
     / / Wenn wir als Server fungieren, hat ein Kunde mit uns in Verbindung
     if (IsServer) {
         / / Senden der aktuellen Zeile
         ServerSocket-> Socket-> Verbindungen [0] -> SendText (Memo1-> Lines-> Strings [Memo1-> Lines-> Count - 1]);
     }
     / / Wenn wir als Client fungieren, treten Sie mit einem Server
     else {
         / / Senden der aktuellen Zeile
         ClientSocket-> Socket-> SendText (Memo1-> Lines-> Strings [Memo1-> Lines-> Count -1]);
     }
  }
}
//------------------------------------------------ ---------------------------
/ / Wenn das Programm gestartet
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: FormCreate (TObject * Sender)
{
  CheckBoxList-> Checked = true, / / ​​aktiviere Sockel und geben Hörmodus
}
//------------------------------------------------ ---------------------------
/ / Beim Anschluss
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketConnect (TObject * Sender, TCustomWinSocket * Sockel)
{
  StatusBar1-> Panels-> Items [0] -> Text = "Verbinden mit:" + Socket-> RemoteHost;
} 

 //------------------------------------------------ ---------------------------
/ / Stop oder die Verbindung trennen
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: DisconnectClick (TObject * Sender)
{
  ClientSocket-> Active = false; / / Schließen der Verbindung zum Server
  ServerSocket-> Active = true, / / ​​Aktivieren und geben ServerSocket Hörmodus
  StatusBar1-> Panels-> Items [0] -> text = "Listening ...";
}
//------------------------------------------------ ---------------------------
/ / Tritt ein, wenn ein Client Socket lesen sollte die Socket-Verbindung.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketRead (TObject * Sender, TCustomWinSocket * Sockel)
{
  / / Wenn der Server sendet diese Daten an die Koeffizienten und der Prozess hat
  Memo2-> Lines-> Add (Sockel-> ReceiveText ()) / / Hinzufügen von Daten auf den Speicher-Empfang
}
//------------------------------------------------ ---------------------------
/ / Tritt ein, wenn der Server-Socket die Informationen von einem Client-Socket gelesen werden sollte.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ServerSocketClientRead (TObject * Sender, TCustomWinSocket * Sockel)
{
  / / Wenn der Client Daten an den Server sendet und dass der Prozess
  Memo2-> Lines-> Add (Sockel-> ReceiveText ()) / / Hinzufügen von Daten auf den Speicher-Empfang
}
//------------------------------------------------ ---------------------------
/ / Es tritt auf einem Socket-Server direkt nach der Verbindung zu einem Client-Socket.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ServerSocketAccept (TObject * Sender, TCustomWinSocket * Sockel)
{
  IsServer = true, / / ​​die als Server
  StatusBar1-> Panels-> Items [0] -> Text = "Verbinden mit:" + Socket-> remoteaddress;
}
//------------------------------------------------ ---------------------------
/ / Tritt ein, wenn eine vollständige Client-Socket-Verbindung durch den Server-Socket akzeptiert.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ServerSocketClientConnect (TObject * Sender, TCustomWinSocket * Sockel)
{
  Memo2-> Lines-> Clear (); / / Reinigen Sie die Daten Memo
}
//------------------------------------------------ ---------------------------
/ / Es kommt kurz vor einem geschlossenen Client-Socket-Verbindung zu einem Server.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketDisconnect (TObject * Sender, TCustomWinSocket * Sockel)
{
  / / CheckBoxList-> Checked = true, / / ​​aktiviere Sockel und geben Hörmodus
  / / Nur wenn es für den Server, wenn es als Client
}
//------------------------------------------------ ---------------------------
/ / Wenn der Socket-Verbindung fehlschlägt, verwenden, oder schließen Sie eine Verbindung.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ClientSocketError (TObject * Sender, TCustomWinSocket * Sockel, TErrorEvent ErrorEvent, int & ErrorCode)
{
  Memo2-> Lines-> Add ("Fehler beim Verbinden zu:" + Server);
  ErrorCode = 0;
}
//------------------------------------------------ ---------------------------
/ / Tritt ein, wenn eine Verbindung zu einem Client-Socket wird geschlossen.
//------------------------------------------------ ---------------------------
void __fastcall TChatForm: ServerSocketClientDisconnect (TObject * Sender, TCustomWinSocket * Sockel)
{
  StatusBar1-> Panels-> Items [0] -> text = "Listening ...";
} 

main.h

 //------------------------------------------------ --------------------------- 
# Ifndef mainha
# Definieren mainha
//------------------------------------------------ ---------------------------
# Include <Classes.hpp>
# Include <Controls.hpp>
# Include <StdCtrls.hpp>
# Include <Forms.hpp>
# Include "ScktComp.hpp"
# Include <Buttons.hpp>
# Include <ComCtrls.hpp>
# Include <ExtCtrls.hpp>
# Include <Menus.hpp>
//------------------------------------------------ ---------------------------
TChatForm Klasse: public TForm
{
__published: / / IDE verwaltete Komponenten
TStatusBar * StatusBar1;
TPanel * Panel1;
TMemo * Memo1;
TMemo * Memo2;
TServerSocket * ServerSocket;
TClientSocket * ClientSocket;
TButton * Schließen;
TCheckBox * CheckBoxList;
TButton * Trennen;
TButton * Ausfahrt;
void __fastcall Memo1KeyDown (TObject * Sender, WORD & Key,
TShiftState Shift);
void __fastcall FormCreate (TObject * Sender);
void __fastcall ClientSocketConnect (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall ClientSocketDisconnect (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall ClientSocketRead (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall ServerSocketClientRead (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall ServerSocketAccept (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall ServerSocketClientConnect (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall ClientSocketError (TObject * Sender,
TCustomWinSocket * Sockel, TErrorEvent ErrorEvent, int & ErrorCode);
void __fastcall ServerSocketClientDisconnect (TObject * Sender,
TCustomWinSocket * Sockel);
void __fastcall CheckBoxListenClick (TObject * Sender);
void __fastcall ConnectClick (TObject * Sender);
void __fastcall DisconnectClick (TObject * Sender);
void __fastcall ExitClick (TObject * Sender);
private: / / User Erklärungen
public: / / User Erklärungen
bool IsServer / / fungieren als Server
Server String / / IP-Verbindung zum Server
__fastcall TChatForm (TComponent * Owner);
};

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

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