sql >> Databáze >  >> RDS >> Mysql

Zjištění serveru MySQL v síti LAN pomocí naslouchacího portu (Inno Setup)

Chcete-li zkontrolovat, zda server naslouchá na portu, můžete použít Winsock ovládací prvek OLE :

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;

Všimněte si, že Winsock ovládání vyžaduje čerpání fronty zpráv. Před spuštěním kontroly tedy možná budete muset průvodce deaktivovat, abyste zabránili uživateli v manipulaci s formulářem.

Credits:The AppProcessMessage pochází z Jak spustit 7zip bez blokování uživatelského rozhraní InnoSetup?



  1. velmi velká tabulka mysql a hlášení

  2. propojení Pythonu 2.6.1 s MySQLdb

  3. Jak opravit poškozenou tabulku

  4. Importovat datum řetězce ve sloupci Odvozeno