⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nhcnetbase.pas

📁 NetHook API 对战平台内核库是一套实现时下流行的网络对战平台[如浩方、VS]同样功能的通用内核库
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  FNetHandlerList := TList.Create;
  FNetIO.RegisterNetDriver(Self);
end;

destructor TNetDriver.Destroy;
begin
  FNetIO.UnregisterNetDriver(Self);
  FNetHandlerList.Free;
  inherited;
end;

//-----------------------------------------------------------------------------
// 描述: UDP数据包过滤器
// 返回:
//   True  - 有效包
//   False - 无效包
//-----------------------------------------------------------------------------
function TNetDriver.FilterUdpPacket(const PacketBuffer; PacketSize: Integer): Boolean;
begin
  Result := True;
end;

//-----------------------------------------------------------------------------
// 描述: TCP数据包过滤器
// 返回:
//   True  - 有效包
//   False - 无效包
//-----------------------------------------------------------------------------
function TNetDriver.FilterTcpPacket(Connection: TTcpConnection; const PacketBuffer;
  PacketSize: Integer): Boolean;
begin
  Result := True;
end;

//-----------------------------------------------------------------------------
// 描述: UDP数据分派 (可供覆写)
//-----------------------------------------------------------------------------
procedure TNetDriver.DispatchUdpPacket(const PacketBuffer; PacketSize: Integer;
  const PeerAddr: TPeerAddress);
begin
  DeliverUdpPacket(PacketBuffer, PacketSize, PeerAddr);
end;

//-----------------------------------------------------------------------------
// 描述: TCP数据分派 (可供覆写)
//-----------------------------------------------------------------------------
procedure TNetDriver.DispatchTcpPacket(Connection: TTcpConnection;
  const PacketBuffer; PacketSize: Integer);
begin
  DeliverTcpPacket(Connection, PacketBuffer, PacketSize);
end;

//-----------------------------------------------------------------------------
// 描述: 把UDP数据直接递送给 NetHandler
//-----------------------------------------------------------------------------
procedure TNetDriver.DeliverUdpPacket(const PacketBuffer; PacketSize: Integer;
  const PeerAddr: TPeerAddress);
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).DispatchUdpPacket(PacketBuffer, PacketSize, PeerAddr);
end;

//-----------------------------------------------------------------------------
// 描述: 把TCP数据直接递送给 NetHandler
//-----------------------------------------------------------------------------
procedure TNetDriver.DeliverTcpPacket(Connection: TTcpConnection;
  const PacketBuffer; PacketSize: Integer);
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).DispatchTcpPacket(Connection, PacketBuffer, PacketSize);
end;

//-----------------------------------------------------------------------------
// 描述: 初始化工作(对象创建之后、开始工作之前)
// 备注: 若无法初始化,必须抛出异常。
//-----------------------------------------------------------------------------
procedure TNetDriver.Initialize;
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).Initialize;
end;

//-----------------------------------------------------------------------------
// 描述: 结束化工作
//-----------------------------------------------------------------------------
procedure TNetDriver.Finalize;
var
  I: Integer;
begin
  for I := FNetHandlerList.Count - 1 downto 0 do
    TNetHandler(FNetHandlerList[I]).Finalize;
end;

//-----------------------------------------------------------------------------
// 描述: 登录之前的处理
//-----------------------------------------------------------------------------
procedure TNetDriver.DoBeforeLogin;
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).DoBeforeLogin;
end;

//-----------------------------------------------------------------------------
// 描述: 注销之前的处理
//-----------------------------------------------------------------------------
procedure TNetDriver.DoBeforeLogout;
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).DoBeforeLogout;
end;

//-----------------------------------------------------------------------------
// 描述: 登录成功之后的处理
//-----------------------------------------------------------------------------
procedure TNetDriver.DoAfterLogin;
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).DoAfterLogin;
end;

//-----------------------------------------------------------------------------
// 描述: 注销之后的处理
//-----------------------------------------------------------------------------
procedure TNetDriver.DoAfterLogout;
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).DoAfterLogout;
end;

//-----------------------------------------------------------------------------
// 描述: 垃圾收集
//-----------------------------------------------------------------------------
procedure TNetDriver.CollectGarbage;
var
  I: Integer;
begin
  for I := 0 to FNetHandlerList.Count - 1 do
    TNetHandler(FNetHandlerList[I]).CollectGarbage;
end;

//-----------------------------------------------------------------------------
// 描述: NetIO 收到 UDP 包后,分派给 NetDriver.
//-----------------------------------------------------------------------------
procedure TNetDriver.ProcessRecvedUdpPacket(const PacketBuffer;
  PacketSize: Integer; const PeerAddr: TPeerAddress);
begin
  if FilterUdpPacket(PacketBuffer, PacketSize) then
    DispatchUdpPacket(PacketBuffer, PacketSize, PeerAddr);
end;

//-----------------------------------------------------------------------------
// 描述: 注册 NetHandler
//-----------------------------------------------------------------------------
procedure TNetDriver.RegisterNetHandler(const NetHandler: TNetHandler);
begin
  if FNetHandlerList.IndexOf(Pointer(NetHandler)) = -1 then
    FNetHandlerList.Add(NetHandler);
end;

//-----------------------------------------------------------------------------
// 描述: 注销 NetHandler
//-----------------------------------------------------------------------------
procedure TNetDriver.UnregisterNetHandler(const NetHandler: TNetHandler);
begin
  FNetHandlerList.Remove(NetHandler);
end;

{ TNetHandler }

constructor TNetHandler.Create;
begin
  inherited;
end;

destructor TNetHandler.Destroy;
begin
  SetNetDriver(nil);
  inherited;
end;

procedure TNetHandler.SetNetDriver(Value: TNetDriver);
begin
  if FNetDriver <> Value then
  begin
    if FNetDriver <> nil then
      FNetDriver.UnregisterNetHandler(Self);
    if Value <> nil then
      Value.RegisterNetHandler(Self);
    FNetDriver := Value;
  end;
end;

//-----------------------------------------------------------------------------
// 描述: 收到 NetDriver 分派过来的UDP数据
//-----------------------------------------------------------------------------
procedure TNetHandler.DispatchUdpPacket(const PacketBuffer; PacketSize: Integer;
  const PeerAddr: TPeerAddress);
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 收到 NetDriver 分派过来的TCP数据
//-----------------------------------------------------------------------------
procedure TNetHandler.DispatchTcpPacket(Connection: TTcpConnection;
  const PacketBuffer; PacketSize: Integer);
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 初始化工作(对象创建之后、开始工作之前)
// 备注: 若无法初始化,必须抛出异常。
//-----------------------------------------------------------------------------
procedure TNetHandler.Initialize;
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 结束化工作
//-----------------------------------------------------------------------------
procedure TNetHandler.Finalize;
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 登录之前的处理
//-----------------------------------------------------------------------------
procedure TNetHandler.DoBeforeLogin;
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 注销之前的处理
//-----------------------------------------------------------------------------
procedure TNetHandler.DoBeforeLogout;
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 登录成功之后的处理
//-----------------------------------------------------------------------------
procedure TNetHandler.DoAfterLogin;
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 注销之后的处理
//-----------------------------------------------------------------------------
procedure TNetHandler.DoAfterLogout;
begin
  // nothing
end;

//-----------------------------------------------------------------------------
// 描述: 垃圾收集
//-----------------------------------------------------------------------------
procedure TNetHandler.CollectGarbage;
begin
  // nothing
end;

end.

⌨️ 快捷键说明

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