Server sendet an Client
-
Ich habe nun einen Client sowie Server beide Port 5000 auf einem rechner
zum laufen gebracht.
Wenn der Server läuft und ich dann den Client starte kommt das Ereigniss ClientConnect beim Server.
Nun kann ich Daten vom Client zum Server senden.
Benutze ich allerdings für den Client einen zweiten Rechner der über einen DSL Router verbunden ist funkt es nicht mehr obwohl ich an den Led's des
Routers einen Zugriff auf das Lan Netz sehe.
Ich kann auch keine anderen Ports nutzen, dann kommt immer die Fehlermeldung
"Der Wert kann nicht geändert werden, während der Socket aktiv ist" beim Server.
Übrigens hat der Server den Port 5000 lauscht er nach allen Clients die
den selben Port haben.Folgendes funktioniert:
//----------------------------------------------- // Client //----------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ClientSocket1->Port = 5000; ClientSocket1->Address = "192.168.2.101"; //IP des Clients ClientSocket1->Host = "192.168.2.100"; //IP des Servers ClientSocket1->Active = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { ClientSocket1->Socket->ReceiveBuf(&a,2); //Daten vom Server Edit1->Text = a; } //--------------------------------------------------------------------------- void __fastcall TForm1::TrackBar1Change(TObject *Sender) { test = TrackBar1->Position; Edit1->Text = TrackBar1->Position; ClientSocket1->Socket->SendBuf(&test,2); //Daten zum Server } //------------------------------------------------------- // SERVER //------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ServerSocket1->Port = 5000; ServerSocket1->Active = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { Form1->Edit1->Text = "CONNECT"; //Sobald Client startet tritt das Ereigniss auf } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Socket->ReceiveBuf(&test,2); //Daten vom Client Edit2->Text = test; } //--------------------------------------------------------------------------- void __fastcall TForm1::TrackBar1Change(TObject *Sender) { test = TrackBar1->Position; ServerSocket1->Socket->Connections[0]->SendBuf(&test,2); //Daten zum Client }Habe aber immer noch ein Problem wenn ich einen anderen Port wähle
-
Du musst den Port 5000 "Forwarden" sprich freigeben, sonst wird er von deinem Router blockiert.
-
Hallo hermes,
in der Hilfe zum Client habe ich gelesen:
"Die Eigenschaft Host ist ein Alias für die IP-Adresse des Server-Systems.
Die Eigenschaft Address bezeichnet die IP-Adresse des Server-Systems."Hieraus schliesse ich, dass sich beide Eigenschaften auf den Server beziehen. In deinem Code ist das etwas anders
//----------------------------------------------- // Client //----------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { ClientSocket1->Port = 5000; ClientSocket1->Address = "192.168.2.101"; //IP des Clients ClientSocket1->Host = "192.168.2.100"; //IP des Servers ClientSocket1->Active = true; }Bin mir nicht sicher ob das ein Grund mit ist.
Evi48
-
Hallo evi48,
ClientSocket1->Address = "192.168.2.101"; //IP des Clients
ist die Host Adresse des ClientsClientSocket1->Host = "192.168.2.100"; //IP des Servers
ist die Host Adresse des Servers.Ich habe heute auf der Arbeit im LAN ein wenig rumprobiert und habe
eine von mir programmierte Testsoftware mit einem ClientSocket versehen.
Auf einem anderen Rechner lief ein Server mit dem ich die Testsoftware
über LAN Fernsteuern konnte.
Da die ganze Sache funktionierte also sind die Angaben oben richtig.Allerdings versuche ich das ganze im WAN und nicht im LAN, leider klappt
das nicht.
ClientSocket->Adresse = "meine WAN IP"
ClientSocket->Host = "WAN IP eines Kollegen"Ich muss dazu sagen das ich hinter einem DSL Router hänge.
-
Checkliste
1. hast du den Hinweis von PuppetMaster2k befolgt und den router konfiguriert ?
2. hast du versucht mit ping eine Verbindung zu testen ?
3. hast du einen anderen port versucht?
-
ich habe mir ein client-server programm geschrieben, das übers netz (im geschäft durchs ganze Netzwerk) und aber auch übers internet funktioniert
dabei ist meine "einzige" angabeClientSocket1->Host = IP;wobei ich aber
ClientSocket1->Adressnichts zuweise.
[edit] Port wird natürlich auch angegeben [/edit]
-
Die Frage ist jetzt, willst du damit übers Internet (WAN) eine Verbindung aufbauen oder über das W-LAN? Wenn übers Internet, dann kommst du mit deiner lokalen IP nicht weit, weil du dann die IP, die dir dein Provider zugewiesen hat, benötigst.
Wenn du übers W-LAN gehn willst, dann geh so vor, wie AndreasW schon sagte!
-
AndreasW schrieb:
Checkliste
1. hast du den Hinweis von PuppetMaster2k befolgt und den router konfiguriert ?
2. hast du versucht mit ping eine Verbindung zu testen ?
3. hast du einen anderen port versucht?Bei dem Router habe ich die Firewall disabled.
Die Verbindung wurde mit Ping getestet.
Allerdings habe ich als "Client Host Adresse" die Adresse des Rechners und nicht die WAN IP angegeben, ist das vieleicht das Problem?
-
PuppetMaster2k schrieb:
Die Frage ist jetzt, willst du damit übers Internet (WAN) eine Verbindung aufbauen oder über das W-LAN? Wenn übers Internet, dann kommst du mit deiner lokalen IP nicht weit, weil du dann die IP, die dir dein Provider zugewiesen hat, benötigst.
-
Ich habe ein Problem mit dem Begriff W-LAN.
LAN-> LOCAL ARRAY NET //Intranet
WAN-> WIDE ARRAY NET //Internet
W-LAN-> ?????WIDE-LOCAL ARRAY NET oder Wireles-LAN ??????
-
Das A steht für Area. Das "W-LAN" ist PuppetMaster2k bestimmt nur so rausgerutscht, er meinte mit Sicherheit WAN.
W-LAN bzw. WLAN bedeutet Wireless LAN.Mit dem Problem hat das aber nicht wirklich etwas zu tun, und das Problem hat eigentlich auch nichts mehr mit dem BCB zu tun.
Du musst deinen DSL-Router so konfigurieren, dass er Anfragen, die auf einem bestimmten Port (hier 5000) hereinkommen, an den Rechner im lokalen Netz weiterleitet, auf dem deine Serveranwendung läuft. Das ist das sogenannte port forwarding, das PuppetMaster2k bereits erwähnte.
-
Würde diese Programm auch funktionieren, wenn man ein PocketPc hat der über WLan Daten verschickt? Ich probiere grade das Programm aus, was hier gepostet wurde, aber ich bekomme keine Verbindung zustande. Das Programm auf dem PocketPc wurde mit Microsoft eVC++4.0 geschrieben. Kann es sein das Microsoft und Borland nicht zusammen funktionieren ??
mfg devilempire81