AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Welcher Dienst hinter welchem Port?
Thema durchsuchen
Ansicht
Themen-Optionen

Welcher Dienst hinter welchem Port?

Ein Thema von jackie · begonnen am 2. Mär 2004 · letzter Beitrag vom 5. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
jackie
(Gast)

n/a Beiträge
 
#1

Welcher Dienst hinter welchem Port?

  Alt 2. Mär 2004, 18:40
Hi!
Ich benütze folgenden Code, um herauszufinden, ob ein Port offen ist (nur im lokalen Netzwerk; nichts illegales ):
Delphi-Quellcode:
function PortPresent(const URL: String; Port: DWord): Boolean;
// URL can be like [url]www.developers.org[/url] or an IP like 127.0.0.1
var
  S: TSocket;
  A: SOCKADDR_IN;
  W: TWsaData;
  H: pHostEnt;
begin
  Result := False;
  if WsaStartup(MakeWord(1, 1), W) = 0 then
  begin
    H := GetHostByName(PChar(URL));
    if H <> nil then
    begin
      FillChar(A, SizeOf(A), 0);
      A.sin_family := AF_INET;
      A.sin_addr.S_addr := PDWord(H.h_addr_list^)^;
      A.sin_port := htons(Port);
      S := Socket(AF_INET, SOCK_STREAM, 0);
      if S <> INVALID_SOCKET then
      begin
        Result := Connect(S, A, SizeOf(A)) = 0;
        CloseSocket(S);
      end;
    end;
  end;
  WSACleanup;
end;
Mich würde nun interessieren, ob ich irgendwie herausfinden kann, welcher Dienst hinter welchem Port steckt (zB Port 22 = SSH). Gibt es dafür eine Möglichkeit?
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#2

Re: Welcher Dienst hinter welchem Port?

  Alt 2. Mär 2004, 18:56
Ja, indem du die Daten in einer art Datenbank speicherst.
Allerdings musst du dir vorher erst mal die Infos sammeln.

Bei Google suchenPortlist
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#3

Re: Welcher Dienst hinter welchem Port?

  Alt 2. Mär 2004, 19:24
Gehts nicht einfacher?
zB dass man mit einer Funktion einen Art Identifier - String des Dienstes ausliest? Es kann ja auch sein, dass die Ports vom Systemadmin vertauscht werden. Wenns nicht geht, dann mach ichs mit der Datenbank, aber anders wärs mir lieber.

Aber vorerst mal danke
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Welcher Dienst hinter welchem Port?

  Alt 3. Mär 2004, 07:22
In der WinSock gibt es...

Aus der MDSN
Code:
struct servent FAR * getservbyport(
  int port,            
  const char FAR *proto
);
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#5

Re: Welcher Dienst hinter welchem Port?

  Alt 3. Mär 2004, 12:32
Ich kann kein c. Könntest du mir das für Delphi übersetzen?

[edit]Schon geschafft. Danke[/edit]
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#6

Re: Welcher Dienst hinter welchem Port?

  Alt 3. Mär 2004, 17:33
Also ich bräuchte jetzt doch ein Beispiel. Ich habe es versucht mit
Edit1.Text := getservbyport(22,nil); aber es geht nicht.
  Mit Zitat antworten Zitat
Blechwolf

Registriert seit: 9. Sep 2003
Ort: Aachen
126 Beiträge
 
Delphi 7 Professional
 
#7

Re: Welcher Dienst hinter welchem Port?

  Alt 4. Mär 2004, 09:49
Zitat von jackie:
Edit1.Text := getservbyport(22,nil); aber es geht nicht.
Was eigentlich auch klar ist, da Dir getservbyport keinen String sondern ein struct (record auf Delphianisch) zurück liefert. (siehe auch getservbyname)

Code:
struct servent {
    char FAR *        s_name;
    char FAR * FAR *  s_aliases;
    short            s_port;
    char FAR *        s_proto;
};
Probiers evtl. mal mit
Edit1.Text := getservbyport(22,nil).s_name; Ansonsten mußt Du mal schauen, wie Du die Struct-Elemente in Delphi ansprichst.

Grüße

Wolf
Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (engl. Sprichwort)
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#8

Re: Welcher Dienst hinter welchem Port?

  Alt 4. Mär 2004, 13:13
Hi Blechwolf!
Auf das mit dem Record hätte ich selber kommen können
Ich habs jetzt so versucht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := getservbyport(22,nil).s_name;
end;
Aber jedes mal wenn ich auf den Button drücke, bekomme ich eine Access Violation. Wieso? Was mache ich falsch?
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#9

Re: Welcher Dienst hinter welchem Port?

  Alt 5. Mär 2004, 14:17
Weiß wirklich keiner was?
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#10

Re: Welcher Dienst hinter welchem Port?

  Alt 5. Mär 2004, 14:23
Delphi-Quellcode:
var p : servent;
    sTmp : String;
begin
  p := getservbyport(22, nil);
  if p = nil then
     begin
       sTmp := p^.s_name; // Kopiere inhalt
       Edit1.Text := sTmp;
     end;
end;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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