Brauch Hilfe bei ChatProgramm



  • Hallo Leute,
    Hab n Problem mit meinem Programm.
    Ich weiß das das hier schon oft durchgenommen worden ist ,
    aber ich hab zu meinem Problem keine Antwort gefunden.
    Wär nett wenn ihr mir helfen könntet.

    das ist der Client
    //---------------------------------------------------------------------------
    
    #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)
    {
    ClientSocket1->Host = "SERVER";
    ClientSocket1->Port = Edit1->Text.ToInt();
    ClientSocket1->Address = Edit3->Text;
    ClientSocket1->Open();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    ClientSocket1->Close();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ClientSocket1Write(TObject *Sender,
          TCustomWinSocket *Socket)
    {
    Button2->Click();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    ClientSocket1->Socket->SendText(Edit3->Text);
    }
    //---------------------------------------------------------------------------
    

    Das ist der Server

    //---------------------------------------------------------------------------
    
    #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)
    {
    ServerSocket1->Port = Edit2->Text.ToInt();
    ServerSocket1->Open();
    Edit1->Color = clGreen;
    Memo1->Lines->Add("Server Online");
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    ServerSocket1->Close();
    Edit1->Color = clRed;
    
    Memo1->Lines->Add("Server Offline");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
          TCustomWinSocket *Socket)
    {
    
    Memo1->Lines->Add("Client connected");        
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
          TCustomWinSocket *Socket)
    {
    
    Memo1->Lines->Add("client disconnected");        
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ServerSocket1ClientWrite(TObject *Sender,
          TCustomWinSocket *Socket)
    {
    Button3->Click();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    //ServerSocket1->Socket->
    ServerSocket1->Socket->SendText(Edit3->Text);        
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    ServerSocket1->Name = "SERVER";
    }
    //---------------------------------------------------------------------------
    

    Ich weiß ein einfach nicht wo das problem ist 😕 😕 😕
    Ich kann mit dem Client irgendwie nicht zum Server connecten.
    Bitte um Hilfe 😞 😞



  • Betreibst Du das Ganze bereits jetzt über das LAN? Falls nein, wieso ist die Eigenschaft ClientSocket::Host = "SERVER"? Ich frage dies, da es mich stutzig macht, dass Du zu Laufzeit den Namen der Socketkomponente änderst...



  • ach ja ich das ausprobiert ,weil ich dachte vielleicht funktioniert das .
    ich hab das jetzt weg gemacht...



  • Was gibt es denn für Fehlermeldungen? Läuft es nun im LAN, oder beides auf Deinem lokalen Rechner? Wie weit bist Du mit dem Debuggen?



  • ach ich hab ein problem jetzt behoben aber jetzt muss ich irgendwie ein socket aufmachen .
    Weil jetzt die fehlermeldung anzeigt dass sie nicht mit einem socket verbunden ist.

    Fehlermeldung::
    Windows socket error:Eine Anforderung zum Senden oder empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und ( beim senden über einen Datagrammsocket mit einem sendto-aufruf) keine Adresse angegeben wurde(10057), on API'send"



  • Wieso willst Du jetzt einen Socket öffnen? Die werden doch von den Komponenten verwaltet?!
    In dem Example-Ordner des BCB ist ein Beispiel für ein Chatprogramm. Dort kannst Du mal schauen, wie das Prinzip eigentlich funktioniert.
    Für genauere Hilfe bräuchte man hier genaue Fehlerbeschreibungen, die Einstellungen von Port/Host von Client-/Serversocket.

    // Edit
    Deine Fehlermeldung sagt doch genau, dass keine Verbindung hergestellt ist.



  • ich hab irgendwie kein examples ordner.
    naja egal also mein port ist ja 1234
    und was heißt beim clientsocket eigentlich address?
    ich muss ja jetzt irgendwie mit dem client zum server connecten aber wie ?
    ich verssteht das jetzt irgendwie nicht

    aja und addresse ist bei mir auch 1234 weil das sonst nicht geht



  • Du solltest Dich vielleicht erstmal mit den Grundlagen der Socketprogrammierung vertraut machen, offenbar fehlt es bei Dir an absoluten Basics.
    Da Du noch immer nicht geschrieben hast, ob das Programm lokal oder via LAN/WAN läuft, schätze ich mal direkt auf Deinem Rechner.

    Client- und Serversocket brauchen den selben Port: 1234

    ClientSocket::Adress kannste Dir sparen.
    Setze ClientSocket::Host auf localhost und dann sollte es funktionieren.
    Bedenke auch, dass bei BCB eine Hilfe vorhanden ist, in der alle Funktionen und Eigenschaft (oft mit Beispiel) perfekt erklärt sind.



  • ja ok ich später nochmal die basic durch schon ne ganze weile her....
    aba jetzt hab ich den port gleich gestellt doch wie soll ich das mit localhost eingeben so? :

    ClientSocket1->Host = "localhost";



  • Ja, oder direkt im ObjectInspector.



  • das geht immernoch nicht ich hab jetzt den host auf localhost gestellt trozdem gehts nicht



  • Da steht noch immer die gleiche fehlermeldung 😕 😕 😕 😕 😕



  • Minimalbeispiel mit
    Port bei Client und ServerSocket 1234
    ClientSocket::Host = localhost

    //---------------------------------------------------------------------------
    
    #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::VerbindenButtonClick(TObject *Sender)
    {
         ServerSocket1->Active = true;
         try {
           ClientSocket1->Active = true;
         }
         catch (...)  {
           ShowMessage("Verbindungsfehler");
         }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
          TCustomWinSocket *Socket)
    {
          Form1->Caption = "Verbunden";
    }
    //---------------------------------------------------------------------------
    

Anmelden zum Antworten