Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Frage zu TServersocket/Indy! (https://www.delphipraxis.net/76374-frage-zu-tserversocket-indy.html)

Goldesel 3. Sep 2006 09:57


Frage zu TServersocket/Indy!
 
Hallo,

ich möchte gern folgendes Umsetzen:

Im Netzwerk sind zwei Computer. Jetzt soll auf einem PC das Hauptprogramm laufen, welche die Daten von dem anderen PC empfängt. Dabei handelt es sich um Computerinformationen, wie CPU-Auslastung etc. Ich habe mit dem TServerSocket und dem TClientSocket bereits ein wenig gearbeitet und bin auch schon soweit, dass die Daten vom einem PC zum anderen übermittelt werden. Jetzt möchte ich allerdings, dass man eine IP eingeben kann und das Hauptprogramm checkt dann, ob auf dem PC der Client installiert ist, wenn ja werden die Daten gesandt, wenn nicht, dann soll eine Fehlermeldung ausgegeben werden. Ich weiß nicht, ob es besser ist, das oben genannte mit den Indy Komponenten umzusetzen, da müsste ich mich dann allerdings noch einarbeiten.

Ich hoffe, dass ihr mir helfen könnt.

Vielen Dank
Jannik

Balu der Bär 3. Sep 2006 10:01

Re: Frage zu TServersocket/Indy!
 
Warum Indys?

Du setzte das Serversocket auf einen beliebigen Port, in dem er lauscht. Dann nimmst du das Prüf-Programm (Clientsocket), gibst die IP an und schickst eine Nachricht auf den selben Port wo das Serversocket lauscht. Wenn das Serversocket auf diesem Port eine Nachricht empfängt sendet es eine Nachtricht zurück das die Software auf diesem Rechner installiert ist, sollte keine Nachricht zurückkommen kannst du davon ausgehen das die Software auf dem Rechner nicht verfügbar ist. ;)

Tommy 3. Sep 2006 13:48

Re: Frage zu TServersocket/Indy!
 
würde auch die normalen Komponenten nehmen - aber so umständlich musst du es ne machen (hin und zurückschicken) - eigtl müsstest du nur beim Event OnError gucken - wenn da nix ist, mit dem der client sich verbinden kann, müsste der von allein rummeckern - musst du halt ma probieren, welcher errorcode da der richtige ist ^^

Tom

Goldesel 11. Sep 2006 12:09

Re: Frage zu TServersocket/Indy!
 
Hallo,

ich habe noch eine Frage zum selben Thema:
Ich bin jetzt soweit, dass der Client checkt, ob der Server antwortet. Das funktioniert auch. Jetzt möchte ich aber z.B. den Computernamen übertragen. Der Server liest diesen aus und der Client schickt einen Text an den Server mit dem Inhalt "Computername". Auf dem Server wird der Text verarbeitet und jetzt soll der Computername an den Client geschickt werden und dort unter der Variablen "Computername" gespeichert werden. Allerdings wird der Computername immer unter der Variable "Antwort" gespeichert, in welcher steht, ob der Client connecten kann oder nicht.

Ich hoffe Ihr versteht, was ich meine ...

Vielen Dank
Jannik

TheMighty 14. Sep 2006 15:05

Re: Frage zu TServersocket/Indy!
 
Ich hatte vor kurzem das gleiche Problem.

Der Client müsste irgendwie wissen was gerade gesendet wird: der Computername oder die bestätigung, dass der Server da ist.

Erste Lösung (nicht sehr schön, aber einfach):
Der Client setzt nach dem Senden von "Computername" eine Variable auf "True" und kann anhand dieser dann beim Lesen der Nachricht des Servers abfragen, ob diese Nachricht nach der Anfrage "Computername" kommt. Das ist dann höchstwarscheinlich der Computername des Servers.

Zweite Lösung (besser, aber komplizierter):
Der Server schickt den Computernamen mit einem Kontrollzeichen davor (etwa so: "*PCArbeitszimmer").
Dann kann der Client mit

if Socket.RecieveText[1] = "*"

abfragen, ob das erste Zeichen ein * ist.
Dann musst du nur noch den Stern aus dem String entfernen um den Computernamen auch verwenden zu können:

// Str ist der empfangene String
var
AktuellesZeichen: Integer;
begin
Computername := '';
AktuellesZeichen := 2;
while AktuellesZeichen <= Length(Str) do
begin
Computername := Computername + Str[AktuellesZeichen];
AktuellesZeichen := AktuellesZeichen + 1;
end;
end;

hoffe das hilft
Mfg The Mighty

Goldesel 14. Sep 2006 16:32

Re: Frage zu TServersocket/Indy!
 
Hallo TheMighty,

danke für den Tipp. Werd das später mal ausprobieren, weil ich zur zeit nicht die Möglichkeit dazu habe. Ich werde mich dann nochmal melden.

Ach ja:
:party: :party: Ein herzliches Willkommen in der Delphipraxis!!! :party: :party:

TheMighty 15. Sep 2006 07:33

Re: Frage zu TServersocket/Indy!
 
Jo alles klar bitte :tongue:

vlees91 19. Sep 2006 19:53

Re: Frage zu TServersocket/Indy!
 
Eine Frage: Gibt's die TServerSocket auch bei Turbo Delphi?, denn da ist nur ein TTcpServer, und da schaue ich garnicht durch...

Goldesel 19. Sep 2006 20:45

Re: Frage zu TServersocket/Indy!
 
Also ich kann jetzt ja nur von Delphi 2005 reden, aber ich denke, dass du das package vielleicht noch manuell installiern musst. Schau mal im . lib verzeichnis nach einem package namens "dclsockets.bpl" (oder so ähnlich) . Dann müsste es eigentlich funktionieren.

vlees91 20. Sep 2006 07:52

Re: Frage zu TServersocket/Indy!
 
nein, gibts nicht, aber ScktComp.dcu gibt's
und da ist das drin. also jetzt alles zur laufzeit erstellen... :pale:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz