本帖最后由 VisualEleven 于 2011-11-24 14:02:44 编辑

解决方案 »

  1.   

    首先考虑防入侵攻击硬件设备吧
    其次,可以试着考虑同一段时间同IP连接数量(但这有他的不足,有些网同IP同一段正常连接也会有)
     
      

  2.   

    不就是一个安全的问题吗?第一步,服务器在数据库可以指定客户端的IP和端口。一个客户过来连接,你和数据库中的数据进行比对,如果是这个IP的这个端口就允许,其他断开。第二步,在第一步已经安全了许多。你还可以记录用户的验证信息存在数据库中,如硬盘ID号,MAC地址等;客户端连接进来你可以检测这个信息是否匹配。这两步下来基本已经够了。
    当然第二步中硬盘ID号、MAC地址记录有些麻烦,你可以手工录入,也可以提供WEB方式,让用户注册。另外,你总考虑断开的问题,如果交易量不大,建议用UDP协议。
      

  3.   

    多开,你就定个量吧,如果第二种不行,那硬件设备也针对你说这没太大效果了,
    实在不行,在连接建立前,C边发自己变化验证(算法)吧,服务端在定期对新建没通过验证长时间(如2S)没发验证或验证没通过的试试,现在只能想到这程序,并且可以建立学习功能,对某IP数据验证码相同(可能是伪造),且建立多连接没通过的,加入黑名单,一段时间不接受黑名单的新连接
      

  4.   

    利用getsockopt(...,SO_CONNECT_TIME, ...);
    看看连接建立了多长时间,超过指定的时间就强制T掉,closesocket()
    SO_CONNECT_TIME:
     DWORD Returns the number of seconds a socket has been connected. This socket option is valid for connection oriented protocols only.  
      

  5.   

    一般来说,需要定时器计时。就是说,每次收到包,就重新开始计时,计时事件发生则说明某socket超过N秒没有发包,这通常跟“心跳”同时使用。
      

  6.   


    我目前就是这么做的, 并且做了模块检测IP, 当同一个IP在当前连接中超过一定次数就直接断开新的连接, 必要时一个IP只能在当前连接中一次。 不管怎么做, 如果一直连, 而不做想服务器发送数据的话, 都连接都是造成占用, 加入设定并发量为1000, 根本就经不起这样的连接。。 或许7楼的说的对吧, 这根本就不是应用关心的问题。 但是想知道, 到底服务器一般对避免攻击的策略是什么?
      

  7.   


    我一直以为TCP本身就有心跳机制吧, 所以TCP我一直都未做心跳。 使这样吗?