monsoc.pas

来自「翎风世界..传奇服务端..DELPHI源代码 包括DBServer,LogDa」· PAS 代码 · 共 75 行

PAS
75
字号
unit MonSoc;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls, JSocket;
type
  TFrmMonSoc=class(TForm)
    MonSocket: TServerSocket;
    MonTimer: TTimer;
    procedure FormCreate(Sender : TObject);
    procedure MonTimerTimer(Sender : TObject);
    procedure MonSocketClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end ;

var
  FrmMonSoc: TFrmMonSoc;

implementation

uses MasSock, LSShare;

{$R *.DFM}

procedure TFrmMonSoc.FormCreate(Sender : TObject);
var
  Config  :pTConfig;
begin
  Config:=@g_Config;
  MonSocket.Active:=False;
  MonSocket.Address:=Config.sMonAddr;
  MonSocket.Port:=Config.nMonPort;
  MonSocket.Active:=True;
end;

procedure TFrmMonSoc.MonTimerTimer(Sender : TObject);
var
  I: Integer;
  nC:Integer;
  MsgServer:pTMsgServerInfo;
  sServerName:String;
  sMsg:String;
begin
  sMsg:='';
  nC:=FrmMasSoc.m_ServerList.Count;
  for I := 0 to FrmMasSoc.m_ServerList.Count - 1 do begin
    MsgServer:=FrmMasSoc.m_ServerList.Items[i];
    sServerName:=MsgServer.sServerName;
    if sServerName <> '' then begin
      sMsg:=sMsg + sServerName + '/' + IntToStr(MsgServer.nServerIndex) + '/' + IntToStr(MsgServer.nOnlineCount) + '/';
      if (GetTickCount - MsgServer.dwKeepAliveTick) < 30000 then sMsg:=sMsg + '正常 ;'
      else  sMsg:=sMsg + '超时 ;';
    end else sMsg:='-/-/-/-;';
  end;
  for I := 0 to MonSocket.Socket.ActiveConnections - 1 do begin
    MonSocket.Socket.Connections[i].SendText(IntToStr(nC) + ';' + sMsg);
  end;
end;

procedure TFrmMonSoc.MonSocketClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  ErrorCode:=0;
  Socket.Close;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?