Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khám phá máy chủ MySQL trên mạng LAN bằng cổng lắng nghe (Inno Setup)

Để kiểm tra xem máy chủ có đang lắng nghe trên một cổng hay không, bạn có thể sử dụng Winsock Kiểm soát 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;

Lưu ý rằng Winsock điều khiển yêu cầu bơm hàng đợi tin nhắn. Vì vậy, bạn có thể cần phải tắt trình hướng dẫn trước khi chạy kiểm tra, để ngăn người dùng nhầm lẫn với biểu mẫu.

Tín dụng:AppProcessMessage đến từ Làm cách nào để thực thi 7zip mà không chặn giao diện người dùng 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. Làm cách nào để thêm ràng buộc BẬT XÓA trên bảng?

  2. Nhật ký khởi động MySQL 5.7.17 hiển thị [Lưu ý] Quyền truy cập bị từ chối đối với người dùng 'UNKNOWN_MYSQL_USER'

  3. đóng băng pip cung cấp các mô-đun khác nhau từ trợ giúp ('mô-đun')

  4. Làm thế nào để chạy lệnh MySQL trên bash?

  5. Cách tìm số ngày giữa hai ngày trong MySQL