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?