Autor |
Beitrag |
Anarkids
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Do 16.03.06 09:19
Ich bin zum ersten mal hier und ein echter Anfänger, was Delphi betrifft.
Also erstmal Hallo Leute!
Jetzt zu meiner Frage:
Ich würde gern ein Programm umsetzen, welches erlaubt einen Server nach seinen Diensten abzufragen. Man sollte also z.B. die IP eines Fileservers im Netzwerk eingeben können und der Server antwortet dann, ob er HTTP,FTP,SMTL oder sowas am laufen hat.
würde mich freun, wenn ihr mir helfen könntet..
mfg, anarkids
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 16.03.06 09:32
Es gibt meiner Meinung nach zwei Lösungsansätze !
1. Prüfen ob die entsprechenden Dienste in Windows gestartet sind
(Bsp. IIS für http und ftp, usw.)
2. Abfragen ob entsprechende Ports "hochgefahren" sind
(Bsp. 80 für HTTP, 21 für ftp usw.)
Ich halte den zweiten für besser, da es sehr umständlich sein dürfte alle Produkte für den jeweiligen Dienst abzufragen (Bsp IIS, Apache, Jana usw sind für HTTP möglich)
Diesen Ansatz würde ich mit den Indy Komponenten oder mit Sockets umsetzen.
Hierzu gibt es diverse Threads in diesem Forum !
Bitte mal die Suche benutzen
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
Zuletzt bearbeitet von chrisw am Do 16.03.06 09:36, insgesamt 1-mal bearbeitet
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 16.03.06 09:34
Ach so !!!
Herzlich Willkommen in diesem Forum 
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Do 16.03.06 09:35
ich geb dir da mit den ports mal recht. nur weiß ich absolut nich, wie man das anstellt. bin ja wie gesagt noch neu in delphi.
danke im vorraus
anarkids
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 16.03.06 09:38
Welche Delphi Version nutzt Du ? Personal, Pro ....
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Do 16.03.06 09:59
das is die ... öhm... 2006er Architect Trail. sorry musste erst suchen 
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 16.03.06 09:59
Hier mal ein beispiel (weiss allerdings nicht ob es in Delphi 2006 so läuft), um localhost auf port 80 zu testen.
Eine neue Applikation machen (Datei/Neu/Applikation)
Eine Button darauf ziehen (aus der Leiste rechts unten, falls Du Die normale Ansicht hast)
Den Quelltext um die fehlende Anteile ergänzen.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Sockets;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure ActiveConnection (Sender : TOBject); procedure SocketError (Sender : TObject; SocketErr: Integer); public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var Sock : TTCPClient; begin Sock := TTCPClient.Create(self); Sock.RemoteHost := '127.0.0.1'; Sock.RemotePort := '80'; Sock.OnConnect := ActiveConnection; Sock.OnError := SocketError ; Sock.Active := True; Application.ProcessMessages; Sock.Active := False; Sock.Free; end;
procedure TForm1.ActiveConnection (Sender : TOBject); begin Showmessage('Connected'); end;
procedure TForm1.SocketError(Sender : TObject; SocketErr: Integer); begin Showmessage('Port 80 ist nicht auf'); end; end. |
Ist natürlich nur, um das Prinzip zu verstehen !
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Do 16.03.06 10:10
danke danke. ich glaub, darauf kann ich was aufbaun.
ich werd mich dann mal weiter durchschlagen 
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: Do 16.03.06 10:14
OK, Du kannst natürlich auch die entsprechende Komponente aus der bereits angesprochenen Leiste rechts unten nehmen (Internet TCPClient) und die Properties (Active, Remotehost, remoteport ....) und Ereignisse (OnError, OnConnect) im Objectinspektor (OI) einstellen, dann brauchst Du das nicht alles eingeben !
Desweiteren hatte ich vergessen, dass Du nachdem Du den Button aufs Formular gezogen hast, einen Doppelklick darauf machen musst, um den Event Handler (TForm1.Button1Click)zu erzeugen. Dann den Code entsprechend einfügen.
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
Anarkids 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Do 16.03.06 12:13
hey nochmal.
also das hat ganz gut funktioniert. leider alles nur mit port 80. habe noch die ports 21, 119, 3306 und 110 probiert. gehen leider alle nicht, das programm stürtzt ab.
ich probier ma weiter rum, ma schaun ob ich noch was rausfinden kann
|
|
|