![]() |
Suche für Client die richtige Remote.Host-Angabe der Servers
Hallo,
ich habe in meinem Delphi7-Programm eine TcpServer und einen TcpClient. Wenn der Server läuft, kann ich den Client nur mit Connect verbinden, wenn ich TcpClient1.RemoteHost := 'localhost'; zuweise. (Dann klappt auch das Senden zum Server.) Jedoch: Bei der Zuweisung TcpClient1.RemoteHost := '172.73.86.195'; (ist nicht das Original, verändert), was der IP des Rechners in meinem Netzwerk entspricht, bekomme ich keinen Kontakt. Wie kann ich die IP abändern, damit sich eine lokale Adresse ergibt, über die ich den Server finden kann? Denn schließlich möchte ich ja nicht nur mit dem eigenen Rechner in Kontakt treten, sondern mit den anderen des lokalen Netzwerkes. Vielen Dank im Voraus! |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Herzlich willkommen in der Delphi-PRAXiS, Jumbo.
Wenn du localhost verwendest, dann ist scheinbar sichergestellt, dass da auch jemand zuhört - dein eigenes Programm. Gilt das auch für deinen TestServer? Du könntest es zur Überprüfung einmal mit telnet ausprobieren. Grüße vom marabu |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Wenn ich mein Programm mit Server2/Client2 auf einem anderen Rechner(2) im lokalen Netzwerk laufen lasse und den Server2 aktiviere (Listening läuft), dann finde ich keine IP-Adresse, um mit Client1 von Rechner1 Kontakt aufzubauen. Ich habe hier irgendwo gelesen, dass man keine externe IP-Adresse nehmen kann. Muss ich nun aus der vollständigen IP eine lokale konstrieren?
Mit '127.0.0.193' oder so ähnlich? Daß übrigens die Rechner in meinem Netz über IP ansprechbar sind, erkenne ich an der Gratis-Software VNC, mit dessen Hilfe man sich den Bildschirm-Inhalt des anderen Rechners mittels IP auf den eigenen Schirm laden kann. Das funktioniert bei mir. (Natürlich werden auch alle lokalen Rechner unter Netzwerkumgebung aufgelistet.) Gruß Jumbo |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Hallo Jumbo,
klappt prima bei mir:
Delphi-Quellcode:
Was machst du anders?
procedure TDemoForm.ButtonClick(Sender: TObject);
var s: TStrings; begin s := TStringList.Create; with TCPClient do begin RemoteHost := 'decius'; RemotePort := '80'; Connect; SendLn('GET /'); SendLn(''); while Connected and WaitForData(1000) do s.Add(ReceiveLn()); Disconnect; end; ShowMessage(s.Text); s.Free; end; marabu |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Also, ich liste mal das Wichtigste auf:
procedure TForm1.FormActivate(Sender: TObject); begin TcpServer1.LocalPort := '5000'; TcpClient1.RemotePort:= '5000'; MeldeCon; //Meldet den Verbindungsstatus hier:Weder Server noch Client aktiv end; procedure TForm1.ServerEinBtnClick(Sender: TObject); begin TcpServer1.Open; MeldeCon; //Meldet den Verbindungsstatus hier: Server aktiv end; procedure TForm1.ClientEinBtnClick(Sender: TObject); begin //TcpClient1.RemoteHost := '192.33.53.123'; //TcpClient1.RemoteHost := 'dreamsys.local'; //TcpClient1.RemoteHost := 'dreamsys'; //TcpClient1.RemoteHost := 'ACER Laptop.local'; //TcpClient1.RemoteHost := '192.33.53.182'; //TcpClient1.RemoteHost := '0.0.0.182'; //TcpClient1.RemoteHost := '127.23.56.234'; //TcpClient1.RemoteHost := '127.0.0.234'; //TcpClient1.RemoteHost := 'localhost'; LabelC.Caption:= 'Verbindung wird gesucht';update TcpClient1.Open; MeldeCon; //Meldet den Verbindungsstatus hier: Client aktiv end; Es kommt nur eine Verbindung vomClient zum Server zustande, wenn ich die letzten drei RemoteHost-Zuweisungen nehme. Das sind aber alles nur localhost-Angaben. Ich komme einfach mit keiner der ersten 6 Angaben weiter. Gruß Jumbo |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Ich bin einen Schritt weiter gekommen. Mit Port 80 komme ich an einem Rechner weiter. An einem anderen Rechner bekomme ich mit Port 80 nicht mal den Server zum Laufen und mit Port 81 habe ich (vorübergehend) ein Kontakt von Client/Rechner1 zu Server/Rechner2. Ist aber momentan auch schon wieder vorbei.
|
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Port 80 habe ich in meinem Code nur verwendet, weil ich zu faul war ein eigenes Server-Programm aufzusetzen - ich wusste, dass auf der Zielmaschine ein HTTP-Server auf Port 80 lauscht. Mir scheint deine Probleme liegen nicht im Umgang mit der Komponente TCPClient. Wer administriert denn die Rechner, mit denen du dich verbinden willst? Wer weiß, welche Ports belegt und welche frei sind? Ist da eventuell eine Firewall eingerichtet? Wer vergibt die seltsamen IP-Adressen, die ich in deinem Quelltext sehe?
marabu |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Also Marabu, zunächst mal vielen Dank für deine Mühe.
Ich habe einen Elsa - Lan - Router, der die Adressen automatisch vergibt. Du hast recht, jetzt muss ich mich mal um die Ports kümmern. Außerdem habe ich jetzt bei den Rechnern den Wurm-Schutz temporär abgeschaltet und da lief es z.B. auf Port 81 problemlos. Jetzt werde ich noch ein paar Comboboxen für die schnelle Wahl von Ports und IP-Adressen hinzufügen und dann melde ich mich nochmal. Gruß Jumbo |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
Sag mal Marabu,
könntest Du mir freundlicherweise auch die Server-Antwort auf Deine "Get" - Anfrage des Client hier hereinstellen. Insbesondere stelle ich in der Prozedur procedure TForm1.TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient); unter ClientSocket keine brauchbare Host und Port-Angabe fest. Gruß Jumbo |
Re: Suche für Client die richtige Remote.Host-Angabe der Ser
hi jumbo,
versuche mal die eigenschaft ![]() aenogym |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz