sql >> Database >  >> RDS >> Mysql

MySQL-serverdetectie op LAN via luisterpoort (Inno Setup)

Om te controleren of een server op een poort luistert, kunt u Winsock OLE-besturing :

type
  TSocketState =
    (sckClosed, sckOpen, sckListening, sckConnectionPending, sckResolvingHost,
     sckHostResolved, sckConnecting, sckConnected, sckClosing, sckError);

type
  TMsg = record
    hwnd: HWND;
    message: UINT;
    wParam: Longint;
    lParam: Longint;
    time: DWORD;
    pt: TPoint;
  end;

const
  PM_REMOVE = 1;

function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax,
  wRemoveMsg: UINT): BOOL; external '[email protected] stdcall';
function TranslateMessage(const lpMsg: TMsg): BOOL;
  external '[email protected] stdcall';
function DispatchMessage(const lpMsg: TMsg): Longint;
  external '[email protected] stdcall';

procedure AppProcessMessage;
var
  Msg: TMsg;
begin
  while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end;

function CheckPort(Host: string; Port: Integer): Boolean;
var
  Socket: Variant;
begin
  Socket := CreateOleObject('MSWinsock.Winsock');
  Socket.RemoteHost := Host;
  Socket.RemotePort := Port;
  Socket.Connect;

  { Winsock requires message pumping }
  while not (Socket.State in [sckConnected, sckError]) do 
  begin
    AppProcessMessage;
  end;

  Result := (Socket.State = sckConnected);

  if Result then
  begin
    Log(Format('Port %d on %s is open', [Port, Host]));
  end
    else
  begin
    Log(Format('Port %d on %s is NOT open', [Port, Host]));
  end;
  Socket.Close;
end;

Merk op dat de Winsock controle vereist het pompen van berichtenwachtrijen. Het is dus mogelijk dat u de wizard moet uitschakelen voordat u de controle uitvoert, om te voorkomen dat de gebruiker met het formulier knoeit.

Credits:de AppProcessMessage komt van Hoe 7zip uit te voeren zonder de InnoSetup-gebruikersinterface te blokkeren?



  1. Hoe database in mijn app op te nemen

  2. HQL-limiet in subselectiequery

  3. Hoe datums met verschillende nauwkeurigheidsniveaus in postgres opslaan?

  4. LEFT OUTER JOIN op matrixkolom met meerdere waarden