Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wykrywanie serwera MySQL w sieci LAN przez port nasłuchiwania (Inno Setup)

Aby sprawdzić, czy serwer nasłuchuje na porcie, możesz użyć Winsock Kontrola 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;

Zauważ, że Winsock sterowanie wymaga pompowania kolejki komunikatów. Może więc być konieczne wyłączenie kreatora przed uruchomieniem sprawdzania, aby uniemożliwić użytkownikowi manipulowanie formularzem.

Credyty:AppProcessMessage pochodzi z Jak wykonać 7zip bez blokowania interfejsu InnoSetup?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. przekonwertować strefę czasową na inną strefę czasową

  2. Jak dołączyć do tabeli kategorii dla rodziców w zapytaniu SQL?

  3. Jak mogę uniknąć otrzymania tego błędu MySQL Nieprawidłowy specyfikator kolumny dla kolumny NAZWA KOLUMNY?

  4. Haversine Fomula z MySQL pozwala uzyskać pobliskie lokalizacje

  5. Połącz aws ec2 mysql z moją lokalną aplikacją java