![]() |
Re: Welcher Dienst hinter welchem Port?
Zitat:
Grüße Wolf |
Re: Welcher Dienst hinter welchem Port?
Hi!
Also wenn ich die Version mit
Delphi-Quellcode:
benutze dann bekomme ich eine AV.
if p = nil then ...
Bei
Delphi-Quellcode:
tut sich gar nichts, wenn ich auf den Button drücke.
if p <> nil then ...
|
Re: Welcher Dienst hinter welchem Port?
Erstmal Ups.
Zitat:
Hast du WSAStartup bzw. WSACleanUp gerufen? |
Re: Welcher Dienst hinter welchem Port?
|
Re: Welcher Dienst hinter welchem Port?
Zitat:
|
Re: Welcher Dienst hinter welchem Port?
Zitat:
Allerdings sollte dann keine Access Violation ausgelöst werden, sondern ein WSAENOTINITIALIZED (oder so ähnlich, ich hab grad kein PSDK da, auf Jeden Fall eine 5stellige Zahl mit einer 1 vorne ;)). |
Re: Welcher Dienst hinter welchem Port?
öhmm jackie, Du machst es ja doch:
Zitat:
Zitat:
in einen Ressourcenschutzblock TRY/FINALLY zu legen, weil mit WSAStartup die WS2_32.dll dynamisch nachgeladen wird, und Du dann sicherstellt, dass am Ende alles wieder aufgeräumt wird. |
Re: Welcher Dienst hinter welchem Port?
@APP: Ich hab das mit dem getservbyport gar nicht in die erste funktion eingebaut, sondern wollte es einfach im OnClick eines Buttons aufrufen, da ich keine Ahnung habe, wo ich es in der oben gezeigten Funktion einbinden soll.
Wenn es mir jemand zeigen kann, wäre ich sehr dankbar. |
Re: Welcher Dienst hinter welchem Port?
Hallo Gregor,
mal schnell zusammengezimmert:
Delphi-Quellcode:
VAR
p : PServEnt; WSAData : TWSADATA; Port : DWORD; BEGIN // FTP Port := 21; IF WsaStartup(MakeWord(2, 0), WSAData) = 0 THEN TRY // Achtung, Port muss in Network Byte Order vorliegen p := getservbyport(hTons(Port), NIL); IF WSAGetLastError = 0 THEN BEGIN IF p <> NIL THEN BEGIN Edit1.Text := p^.s_name; END; END ELSE BEGIN CASE WSAGetLastError OF WSANOTINITIALISED: ShowMessage('A successful WSAStartup call must occur before using this function'); WSAENETDOWN: ShowMessage('The network subsystem has failed.'); WSAHOST_NOT_FOUND: ShowMessage('Authoritative Answer Service not found.'); WSATRY_AGAIN: ShowMessage('A nonauthoritative Service not found, or server failure.'); WSANO_RECOVERY: ShowMessage('Nonrecoverable errors, the services database is not accessible.'); WSANO_DATA: ShowMessage('Valid name, no data record of requested type.'); WSAEINPROGRESS: ShowMessage('A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.'); WSAEFAULT: ShowMessage('The proto parameter is not a valid part of the user address space.'); WSAEINTR: ShowMessage('A blocking Windows Socket 1.1 call was canceled through WSACancelBlockingCall.'); END; END; FINALLY WSACleanup; END; END; |
Re: Welcher Dienst hinter welchem Port?
Hallo APP!
Danke, das funktioniert wunderbar. :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz