个人技术分享

1、IndyTCPserver的创建

IdTCPServer1.DefaultPort:= 8000;
IdTCPServer1.ListenQueue:= 1024; //同时处理请求队列数限制
IdTCPServer1.MaxConnections:= 1024;  //同时连接数量限制,为0不限制连接数
IdTCPServer1.ContextClass:= TNewIdServerContext; //设置为自定义TIdServerContext类,作用稍后说明
TIdServerContext.Active:= True;	//启动监听

2、Onconnect事件处理

procedure TMainForm.IdTCPServer1Connect(AContext: TIdContext);
begin
  var Context:TNewIdServerContext; //Delphi 10.4.2 支持代码块定义变量
  Context:= TNewIdServerContext(AContext);
  if IdTCPServer1.Contexts.Count >= IdTCPServer1.ListenQueue then
  begin
    Context.Connection.Disconnect;
    Memo1.Lines.Add(
    Format('Socket连接已达到%d上限,%s:%d尝试连接被强制断开!', 
    [IdTCPServer1.ListenQueue, Context.Binding.PeerIP, Context.Binding.PeerPort])
    );
  end;
  
  Context.mUserID:= 123456;  //演示访问用户ID
end;

3、OnExecute事件