请问delphi 编程成如何阻止某个IP连接本机呢?比如说,本机是服务器,经常连接本机的人很多,有些我不想让他连接,就是封他IP,
我应该用delphi怎么实现呢?
我只想用delphi实现,麻烦老师帮忙了,不晓得怎么弄了!

解决方案 »

  1.   

    如:type
         PClient=^Clients
         Clients=Record
         Ip:String[15];
         soc:TSocket;end;For intI:=List.count-1 Downto 0 Do
    Begin
       If PClient(List[intI]).Ip='192.168.0.3' Then
          CloseSocket(PClient(List[intI]).soc);
    End;  随手写的,没有测试
      

  2.   


    procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
    var
      aIP:string;
    begin
      aIP:='192.168.1.24';//你要封的IP
      if AThread.Connection.Binding.PeerIP=aIP then
        AThread.Connection.Disconnect;
    end;
      

  3.   

    delphi写的应用程序,就不能在连接前拒绝了
    只能连上后,判断ip再自动断掉
      

  4.   

    也许hook掉socket库,可能可以在连接前拒绝
      

  5.   

    不是那样的喔,是拦截连接我电脑的所有IP.他们说类似于防火墙拦截功能,不允许的IP不准连接我电脑的任何端口
      

  6.   

    const
      localIp : array[0..3] of BYTE = (192,168,1,2);
      FILTER_TCPUDP_PORT_ANY : WORD = $0000;
      FD_FLAGS_NOSYN      = $1;
      MydwSrcMask : array[0..3] of BYTE = (255,255,255,0);
    var
      hInterface : INTERFACE_HANDLE;
      fHandle : FILTER_HANDLE;
      inFilter : PF_FILTER_DESCRIPTOR;
      FILTER_PROTO_TCP : DWORD;
      dwSrcMask : DWORD;
    begin
        FILTER_PROTO_TCP := MAKELONG(MAKEWORD(($06),$00),$00000);
        dwSrcMask := $FFFFFFFF;    PfCreateInterface(0,
                         pf_action_forward,//PF_ACTION_FORWARD,
                         pf_action_forward,//PF_ACTION_FORWARD,
                         FALSE,
                         TRUE,
                         hInterface);    PfBindInterfaceToIPAddress(hInterface, PF_IPV4, @localIp);    inFilter.dwFilterFlags := FD_FLAGS_NOSYN;
        inFilter.dwRule := 0;
        inFilter.pfatType := PF_IPV4;
        inFilter.SrcAddr := @localIp;
        inFilter.SrcMask := @dwSrcMask;
        inFilter.wSrcPort := FILTER_TCPUDP_PORT_ANY;
        inFilter.wSrcPortHighRange := FILTER_TCPUDP_PORT_ANY;//任意来源端口
        inFilter.DstAddr := 0; //任意目标地址
        inFilter.DstMask := 0;
        
        inFilter.wDstPort := 80; //目标端口 80(http 服务)
        inFilter.wDstPortHighRange := 80;
        inFilter.dwProtocol := FILTER_PROTO_TCP;  // 过滤的协议    // 加入一个过滤接口
        //PfAddFiltersToInterface(hInterface, 1, @inFilter, 0, nil, @fHandle);  // 请在这设置一个调试断点,然后看看你的IE是否不能访问WEB页. :)  
      // 移除过滤接口    PfRemoveFilterHandles(hInterface, 1, @fHandle);
        PfUnBindInterface(hInterface);
        PfDeleteInterface(hInterface);
    我在网上找到些资料,但是一使用就阻止整个电脑上网了,不知道怎么用,师傅门帮忙看下吧