由于服务端要求处理大量的短连接客户,所以当初毫不犹豫地选择了AcceptEx,相当一段时间来都表现很不错,但是最近麻烦来了,不断有客户发来连接,但是没发送数据,而且这类连接瞬间就可以达到100个左右,以前检查套接字的连接时间是5分钟检查一次,最大连接时间不允许超过10分钟,现在没办法,就将检查时间间隔设置为5秒一次,连接不能超过25秒,这样一来恶意连接到是很好的解决了,但是影响到了正常客户的请求,因为客户的请求基本上需要操作另一台机器的SQL数据库,一不小心时间就有可能超过25秒,将被作为恶意连接而删除,不知道大家有什么更好的方法,请教一下。

解决方案 »

  1.   

    采集IP的话有难度,我使用getpeername根本没效果,统一报10057没连接的错误,但是数据传输是正常的呀。还请大家支支招。
      

  2.   

    这不是AccEx的错,25秒是足够了的,跟踪一下,看是哪个环节慢。
      

  3.   

    你的程序里面有没有一航gethostbyaddr这个函数,
    有一次我就是因为这个函数让我的程序等待了20秒
      

  4.   

    也可以让acceptex在连接一上来就立即返回。将acceptEx的第四个参数dwReceiveDataLength设为0就可以了。