Autor Beitrag
Anarkids
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Do 16.03.06 09:34 
Ach so !!!



Herzlich Willkommen in diesem Forum :welcome:

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 16.03.06 09:59 
das is die ... öhm... 2006er Architect Trail. sorry musste erst suchen ;-)
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: 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.

ausblenden volle Höhe Delphi-Quelltext
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
    { Private declarations }
    procedure ActiveConnection (Sender : TOBject);
    procedure SocketError (Sender : TObject; SocketErr: Integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Sock : TTCPClient;
begin
  Sock := TTCPClient.Create(self);  // SocketClient instanzieren
  Sock.RemoteHost := '127.0.0.1';   // IP Adresse des Remote APC's
  Sock.RemotePort := '80';          // Port 
  Sock.OnConnect := ActiveConnection; //Das passiert wenn erfolgreich connectet
  Sock.OnError := SocketError ; // Das passiert wenn nicht erfolgreich connected
  Sock.Active := True; //aktivieren
  Application.ProcessMessages;
  Sock.Active := False;  //deaktivieren  
  Sock.Free;             // Speicher wieder freigeben
end;

procedure TForm1.ActiveConnection (Sender : TOBject);
begin
  Showmessage('Connected');  //Wenn erfogreich verbunden gebe Message aus
end;

procedure TForm1.SocketError(Sender : TObject; SocketErr: Integer);
begin
  Showmessage('Port 80 ist nicht auf');  //Wenn nicht erfogreich verbunden gebe Message aus
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 16.03.06 10:10 
danke danke. ich glaub, darauf kann ich was aufbaun.

ich werd mich dann mal weiter durchschlagen ;-)
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: 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