TCP-Verbindung in C++ Builder?
-
Hallo!
Ich habe gerade mal den aktuellen kostenlosen Borland C++ Builder (10.0.2288.42451 Update 2) installiert.
Laut c't und auch meinem ersten Eindruck sind die Funktionen für eine kostenlose Version sehr gut.
Was ich aber nicht hinbekommen habe, ist eine Anwendung der TTcpServer- und TTcpClient-Komponenten. Ich hätte da an einen einfachen Chat gedacht. Leider gibt mir die Hilfe keine Hinweise - oder ich habe sie nicht gefunden. Im ganzen Subforum gibt es laut Suchfunktion keinen Post mit TCP im Text.
Wäre super, wenn jemand ein kleines Beispiel oder einen Link für mich hätte.Danke,
peethebee
-
Hallo,
ich habe leider nicht deine version und bin auch kein profi, aber wenn du
die kompnenten TClientSocket und TServerSocket hast, könnte ich dir helfen.Ist im Prinzip nichts schweres. Einer stellt den den Server, der andere den
Client.Du kannst den beiden Komponenten dann eine Adresse zuweisen (zum test
würde ich 127.0.0.1 zuweisen, so kannst du das ganze an deinem PC testen).Wenn du dann Active auf true setzt, wird direkt wenn das programm startet
versucht eine verbindung aufzubauen.(während der laufzeit glaube ich muss man
...->Connect() bzw ..->Disconnect() benutzen).Um zu prüfen ob das hingehauen hat, kannst du unter ereignisse der beiden
komponenten z.b. bei onconnect() die eine MessageBox anzeigen lassenvoid __fastcall TForm1::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) { ShowMessage("Verbindung aufgebaut"); }zum senden gibts extra methoden. Hier ein beispiel für den Client
//... ClientSocket1->Socket->SendText("Hallo Welt!"); //...jetzt einfach noch beim Server die Methode onClientRead(...) mit nem
RecvText versehen und schon kann dein client zum server was senden//... ShowMessage(ServerSocket1->Socket->ReceiveText()); //...Ich könnte evtl auch noch ein bsp haben. Ansonsten schau mal im Example ordner,
da findet sich bestimmt was.Könntest du mir bitte mal den link zu deiner BCB version schicken? wäre nett

Weißt du, ob man da mit komerzielle Programme schreiben darf?
-
Hallo!
Das habe ich dank deine Hinweise hinbekommen:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Chat.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TcpServer1->Active = True; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { TcpClient1->Active = True; } //--------------------------------------------------------------------------- void __fastcall TForm1::TcpServer1Accept(TObject *Sender, TCustomIpClient *ClientSocket) { ShowMessage("Client ist da. Message vom Server"); } //--------------------------------------------------------------------------- void __fastcall TForm1::TcpClient1Connect(TObject *Sender) { TcpClient1->Sendln("Nachricht vom Client.:."); } //--------------------------------------------------------------------------- void __fastcall TForm1::TcpServer1Listening(TObject *Sender) { //Button1->Caption = TcpServer1->Receiveln(); } //---------------------------------------------------------------------------Die GUI hat einfach nur zwei Buttons und TTcpServer sowie -Client.
Die Verbindung scheint zu klappen, da die Message erscheint (übrigens über alle Monitore hinweg, in riesiger Größe).
Beim Server scheitert aber das Ändern der Caption in beim Listening-Ereignis. Was läuft da noch falsch? Ich hätte noch OnCreateHandle, OnDestroyHandle, OnGetThread...Edit: Link zum Explorer: http://www.borland.com/downloads/download_turbo.html
Ob kommerziell oder nicht, bin ich nicht sicher, würde aber eher ja vermuten, nachdem das bei Borland früher (z.b. Delpho 6 Pers.) so war. Könnte sich aber natürlich geändert haben.Edit 2: Was ich so geschaut habe, nutzt mein Borland-Knecht Version 10 der Indy-Components, die vorinstalliert sind. Dazu ist die Doku wohl noch etwas dürftig...
Danke für deine Hilfe,
peethebee