delphi三层程序,如果同IP的用户已经连接成功,就不允许同IP的再来连接了,怎么弄? 服务器端用的是scktsrvr服务

解决方案 »

  1.   

    各位,能否详细点,我想的方法是修改sktsrv的源代码,但是我不知道具体修改哪一段,怎么修改?请高手指点一下,我觉得这个应该不算太难。
      

  2.   

    我这样修改了一下sktsrv的源代码,但是行不通,大家看看问题出在哪里?或者这样是否可行?procedure TSocketForm.AddClient(Thread: TServerClientThread);
    var
      Item: TListItem;
      i: Integer;
    begin  //如果已经有了同IP的连接了,则不允许再连接  for i := 0 to ConnectionList.Items.Count - 1 do
        Begin
           //if  ConnectionList.Items[i].Caption = Thread.ClientSocket.RemoteAddress then
           if comparestr(Thread.ClientSocket.RemoteAddress,ConnectionList.Items[i].caption)=0 then
             Begin
               showmessage('已经有了同IP连接上了!' + Thread.ClientSocket.RemoteAddress);
                ...
              End;
        End;  //  Item := ConnectionList.Items.Add;
      Item.Caption := IntToStr(Thread.ClientSocket.LocalPort);
      Item.SubItems.Add(Thread.ClientSocket.RemoteAddress);  //Thread.ClientSocket.RemoteAddress,是客户端IP
      

  3.   

    自己DEBUG一下,看看能否进到:
    showmessage('已经有了同IP连接上了!' + Thread.ClientSocket.RemoteAddress);
    ,不行的话,就是你判断有问题了,能进,就是你处理断开,没有做好。
      

  4.   

    Debug了,不能进入showmessage里面,但是看逻辑,没发现问题,有给指导的吗?
      

  5.   

    你怎么不直接输出ConnectionList.Items[i].caption看看???
    都DEBUG这个地步还解决不了???
      

  6.   

    输出过,比输出过Thread.ClientSocket.RemoteAddress,但是看不出问题,