Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penemuan server MySQL di LAN dengan mendengarkan port (Inno Setup)

Untuk memeriksa apakah server mendengarkan pada port, Anda dapat menggunakan Winsock Kontrol 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;

Perhatikan bahwa Winsock kontrol membutuhkan pemompaan antrian pesan. Jadi, Anda mungkin perlu menonaktifkan wizard sebelum menjalankan pemeriksaan, untuk mencegah pengguna mengacaukan formulir.

Kredit:AppProcessMessage berasal dari Bagaimana cara menjalankan 7zip tanpa memblokir UI 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. Hasilkan urutan integer di MySQL

  2. Kelompokkan hasil mysql dalam kelompok empat

  3. MySQL:Pilih baris dengan lebih dari satu kemunculan

  4. Mysql memperbarui baris dengan nilai baris lain di tabel yang sama

  5. Doktrin:TENTANG PEMBARUAN KUNCI DUPLIKAT