Chatprogramm via TserverSocket + TclientSocket / Fehlermeldung 10057
-
Muss ich dazu vieleicht "ClientSocket1->Host" oder "ClientSocket1->Name" verwenden? Und wozu genau sind die denn nomal da?
-
jarhead_02 schrieb:
Und wozu genau sind die denn nomal für da?
Steht in der Hilfe;
ansonsten, ja erstmal auf dem lokalen Rechner testen: bei ClientSocket::Host localhost bzw. 127.0.0.1 eintragen
-
Hab es jetzt mal Lokal am Rechner Probiert. Aber da kommt genau die gleiche Fehlermeldung
-
tja, da wird wohl Dein Quellcode fehlerhaft sein.
Variante a) relevanten Code hier posten
Variante b) das Boland-Chat-Beispiel aus dem Examplesordner\Internet\Chat\ durcharbeiten
-
Hier wäre der Code vom:
-Client
void __fastcall TForm1::Button1Click(TObject *Sender) { ClientSocket1->Host = "localhost"; ClientSocket1->Port = Edit1->Text.ToInt(); //ClientSocket1->Address = Edit2->Text; ClientSocket1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { ClientSocket1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Memo1->Lines->Add (Edit3->Text); ClientSocket1->Socket->ReceiveText(); } //---------------------------------------------------------------------------
-Server
void __fastcall TForm1::Button1Click(TObject *Sender) { ServerSocket1->Port = Edit1->Text.ToInt(); ServerSocket1->Open(); ServerSocket1->Active = true; Panel1->Color = clGreen; Memo1->Lines->Add ("Server connected"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { ServerSocket1->Close(); Panel1->Color = clRed; Memo1->Lines->Add("Server disconnected"); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("Server read"); // for (int i=0;i<ServerSocket1->Socket->ActiveConnections;i++) ServerSocket1->Socket->Connections[0]->SendText(Socket->ReceiveText()); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientWrite(TObject *Sender, TCustomWinSocket *Socket) { ServerSocket1->Socket->SendText("Server send"); }
Irgendwelche Fehler zu sehen? Kann sein das ich da bei meinen letzten Lösungsversuchen auch noch irgendeinen Schmarrn gemacht habe
-
alles ein bisschen wirr, aber keine groben Fehler (zumindest beim connecten);
Schaue Dir mal an was ServerSocket1->Open() macht - da kannst Du Dir die folgende Zeile sparen.
- wird der Inhalt der Edits korrekt als Portnummer verarbeitet ? -> Debugger
- ist der Port der gleiche?
- Startreihenfolge korrekt? also erst Server, dann Client?
- alle Firewalls etc. unten, die den Start eines Server blocken?
-
Also wenn ich mir das ganze Schritt für Schritt anschaue sehe ich das er nach der Zeile
ClientSocket1->Open();
zu der Funktion
void __fastcall TForm1::ClientSocket1Connecting(TObject *Sender, TCustomWinSocket *Socket)
und dann zu der Funktion
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket)
springt.
Bei der letzteren kommt dann die besagte Fehlermeldung-der Inhalt der Edits wird korrekt weiter gegeben
-Als Port habe ich bei beiden 9999 verwendet
-Server wird zuerst gestartet dann der Client --> Ja
-Firewall ist komplett deaktiviert. Selbst das Virenprogramm habe ich mal ausgeschaltet.Sonst noch eine Idee?
-
neues Projekt erstellen;
ServerSocket und ClientSocket aufs Form und dazu nen Button; in OnClick des Buttons rein:ServerSocket1->Port = 9999; ServerSocket1->Open(); Application->ProcessMessages(); ClientSocket1->Host = "localhost"; ClientSocket1->Port = 9999; ClientSocket1->Open();
Wenn es einen Fehler gibt und er nicht connected, dann liegt es an Deinem System (welches im übrigen?)
-
Hey Super es hat geklappt!
Hab das ganze Programm jetzt nochmal minimalistisch aufgezogen.
Jetzt hat es auch geklappt den Server anzusprechen.Manchmal sollte man tatsächlich nicht gleich mit dem Ganzen Startet sondern die Sache Schritt für Schritt angehen,
Vielen Dank!
-
Ok, die Freude kahm wohl doch etwas zu früh.
Hab nun wieder die selbe Fehlermeldung, sobald ich den Server Auffordere etwas zurück zu senden.
Server:
void __fastcall TForm1::Button1Click(TObject *Sender) { ServerSocket1->Port = 9999; ServerSocket1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Edit1->Text = Socket->ReceiveText(); ServerSocket1->Socket->SendText(Edit2->Text); // <-- Hier kommmt die Fehlermeldung }
Clien:
void __fastcall TForm1::Button1Click(TObject *Sender) { //ClientSocket1->Host = "localhost"; ClientSocket1->Address = "84.153.27.220"; ClientSocket1->Port = 9999; ClientSocket1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { ClientSocket1->Socket->SendText(Edit1->Text); } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { Edit2->Text = Socket->ReceiveText(); }
-
Hab das inzwischen auch gelöst.
musste statt
ServerSocket1->Socket->SendText(Edit2->Text);
Folgendes schreiben
ServerSocket1->Socket->Connections[0]->SendText(Edit2->Text);