Проверка на наличния порт с помощта на wmi win32 клас?

Използвам inno setup, за да направя инсталационен файл. Изискваше се да изтегля локален ip адрес (което успях да направя чрез заявка за Win32_NetworkAdapterConfiguration) и да проверя дали конкретен порт е отворен, на който да работи софтуерът (на което в момента търся отговор).

Осъзнавам, че WMI Win32 класовете съдържат толкова много полезна информация. Така че се чудя кой клас Win32 да използвам, за да проверя този порт, като се има предвид, че дали е възможно да се направи това?

Благодаря ти,


person user1738909    schedule 08.11.2012    source източник


Отговори (2)


AFAIK единственият WMI клас, който проверява дали даден порт е отворен, е NetDiagnostics WMI клас и метода ConnectToPort, но този клас присъства само в Windows XP. Така че, ако искате опция, която работи в други версии на Windows, можете да опитате да импортирате (или да напишете свое собствено приложение и да извикате от inno) нещо като Winsock connect функция, като е показано на този въпрос How to check if a TCP port is available with Delphi?

person RRUZ    schedule 08.11.2012

Просто опитайте да свържете сокет към него. Ако успее, значи е наличен.

person user207421    schedule 09.11.2012
comment
Можете ли да дадете пример как да направите тази връзка? - person Lizz; 10.11.2012
comment
@Lizz Наистина ли се нуждаете от пример за bind()? - person user207421; 18.11.2012
comment
Това не е Linux, Windows е, така че само умните хора знаят как да завържат маншета. Можеш ли да помогнеш? - person Lizz; 18.11.2012
comment
@lizz Изискваният код е идентичен за Linux и Windows, с изключение на разликите, въведени от Winsock. Не са необходими допълнителни умения. - person user207421; 22.04.2014