[C/C++] Chat

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von SeBBo, 11. November 2009 .

Schlagworte:
  1. 11. November 2009
    Chat

    Hallo,

    hat jemand ein Beispiel für einen Chat für mich? Das mit den Sockets klappt bei mir irgendwie nit so richtig bei mir. Benutze Turbo C++

    Mfg
    SeBBo
     
  2. 11. November 2009
    AW: Chat

    besser wäre wenn du beschreibst was genau mit den sockets nicht klappt.

    am besten mit code-ausschnitten
     
  3. 12. November 2009
    AW: Chat

    Code:
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     Form1->Caption = "Server"; // Daran sieht man, ob man Server ist
     ServerSocket->LocalPort=StrToInt (Edit1->Text); // wählt den Port aus
     ServerSocket->Open(); // Öffnet den Server
     Memo1->Lines->Add("Chatroom (Server) erfolgreich erstellt.");
     ServerSocket->Accept();
     ShowMessage("Client Connected");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
     Form1->Caption = "Client"; // Daran sieht man, ob man Client ist
     ClientSocket->RemotePort=StrToInt (Edit3->Text); //Wählt Port aus
     ClientSocket->RemoteHost=Edit2->Text; // Setzt die Ip-Adresse des Servers
     ClientSocket->Open(); // Verbindet den Clienten mit dem Server
     Button3->Enabled=true;
     ClientSocket->Sendln("c: Client tritt bei");// Sendet Nachricht, dass der Client sich verbunden hat
     Memo1->Lines->Add("Verbindung zum Server wurde hergestellt.");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
     if (Form1->Caption=="Server"){
     Memo1->Lines->Add("Server:"+Edit4->Text); //fügt den eigenen Text ins Memo
     ServerSocket->Sendln(Edit4->Text);
     }
    
     if (Form1->Caption=="Client") {
     if (ClientSocket->Active==true) {
     Memo1->Lines->Add("Client:"+Edit4->Text); // wird der eigenen Text ins Memo eingefügt
     ClientSocket->Sendln("n:"+Edit4->Text); //n: signalisiert dem Server, dass es eine Nachricht vom Nutzer ist.
     Memo1->Lines->Add("Fehler beim Senden einer Nachricht an den Server!");
     }else {
     Memo1->Lines->Add("Du bist mit keinem Server verbunden."); //fügt Fehlermeldung ins Hauptfeld
    
    
     }
     Edit4->Text="";
     }
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
     if (Form1->Caption=="Client") {
     ClientSocket->Close(); // Client schließen
     Memo1->Lines->Add("Verbindung geschlossen");
     Memo1->Lines->Add("Fehler beim Schließen der Verbindung!");
    
     }
     if (Form1->Caption=="Server") {
     ServerSocket->Close(); // Server schließen
     Memo1->Lines->Add("Server (Chatroom) geschlossen");
     Memo1->Lines->Add("Fehler beim Schließen des Servers!");
     }
     Form1->Caption="Simple TCP Chat";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ClientSocketReceive(TObject *Sender, PChar Buf,
     int &DataLen)
    {
     Memo1->Lines->Add("Server:" + ClientSocket->Receiveln()); 
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    if (Form1->Caption=="Client") {
     ClientSocket->Close();
    }
    if (Form1->Caption=="Server") {
     ServerSocket->Close();
    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ServerSocketListening(TObject *Sender)
    {
    ShowMessage("Socket Listening");
    ShowMessage(ServerSocket->Receiveln());
    AnsiString text;
    text=ServerSocket->Receiveln();
    Memo1->Lines->Add("Client: "&text); //wenn es eine Nachticht vom Nutzer ist, wird dem Memo die Nachricht hinzugefügt
    
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ServerSocketAccept(TObject *Sender,
     TCustomIpClient *ClientSocket)
    {
     ShowMessage("Verbindung akzeptiert");
     ShowMessage(ServerSocket->Receiveln());
    
    }
    //---------------------------------------------------------------------------
    Das ist mein Quellcode
     
  4. 12. November 2009
    AW: Chat

    Den Teil hast du noch nicht getan, so ist Hilfe schwer.


    Treten Compilerfehler auf? Wenn ja, hier reinkopieren!
    Treten zur Laufzeit Fehler auf? Debugger anwerfen und die Fehlerstelle suchen!
    Am besten mal deine Buttons/Edits benennen, damit man schneller erkennt, was was ist.
     
  5. 12. November 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Chat

    Also es treten keine Compilierfehler auf und auch keine Socket Fehler und trotzdem bekomm ich keine Verbindung hin. Keine Reaktion. Bilder mit der grafischen Oberfläsche und beschreibung kommen sofort.

    https://www.xup.in/pic,19009549/Unbenannt.PNG
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.