大家在用DELPHI做项目时,控制用户连接数是如何做得?

解决方案 »

  1.   

    控制什么连接数啊,如果是数据库,sqlserver本身可以检测到登录用户数,当然最好还是自己写一个socket通讯,登陆后,服务端计数+1,并定时检测客户端是否存在
      

  2.   

    1楼的方法就非常好拉,在socket的服务器做个计数器
      

  3.   

    更改SQL SERVER的鏈接數量即可……2樓很明確了。
      

  4.   

    可SQL 是用户管理的,他也可以更改为更多的用户。如何办?
      

  5.   

    你做一个简单的连接管理服务端,客户端每登录就在服务端累加再判断即可,用socket就行~~~
      

  6.   

    在三层的服务器端
    1、设全局变量var FClientCount:integer;
    2、RemoteDat1的TTServer.RemoteDataModuleCreate(Sender: TObject); 事件中
      FClientCount:= FClientCount+1;
    当客户端上线,创建数据模块时,自动加 1 。
      

  7.   

    procedure TServer.ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      i,j:integer;
    begin
      j:=-1;
      for i:=0 to sessions do
      begin
        if session[i].CHandle= socket.SocketHandle then
        begin
           session[i].CSocket :=socket;
           session[i].CName:=socket.RemoteHost;
           session[i].CAddress:=socket.RemoteAddress;
           session[i].CUsed:=true;
           break;
        end;
        j:=i;
      end;
      if sessions=CMax then
      begin
        socket.SendText('对不起,已超过最大在线人数,请稍后!');
        exit;
      end;  if j=sessions then
      begin
        inc(sessions);
        session[i].CSocket:=socket;
        session[i].CHandle:=socket.SocketHandle;
        session[i].CName:=socket.RemoteHost;
        session[i].CAddress:=socket.RemoteAddress;
        session[i].CUsed:=true;
      end;
      listbox1.Items.Add(inttostr(socket.SocketHandle));
      statusbar1.Panels[0].Text:='客户端'+socket.RemoteHost+'已连接';
    end;我用是用的ServerSocket 控件
    在ClientConnect事件中记录连接数const
      CMax=3;//客户端最大连接数
    type
      client_record=record
      CHandle: integer;//客户端套接字句柄
      CSocket:TCustomWinSocket; //客户端套接字
      CName:string; //客户端计算机名称
      CAddress:string; //客户端计算机IP地址
      CUsed: boolean;//客户端联机标志
    end;这个例子我也是网上找的,找找有完整的例子,自己再扩充一下,理解一下。
      

  8.   

    可以用ServerSocketClientConnect來作