首先定义好“非正常客户”的含义
然后加上身份验证机制;这一切要在应用层完成,TCP/IP和winsock并不提供这样的机制

解决方案 »

  1.   

    不需要例子了,我简单说一下,
    服务器接收到一个连接请求后,给客户端发送一个信息A,要求客户端对A进行一定转换
    让后把转换后的信息B发送回服务器,服务器判断返回的信息是否需要的信息,不是则关闭连接。
      

  2.   

    再明确一下我的问题,举例说明:
    服务器端用CSocket类listen、receive、通过对一消息类序列化读取数据(标准教材)
    但如果有人恶意想攻击你,探测到你的listen端口然后发送一组非法数据(跟消息类决不匹配),当listen接受此连接后接着当然是recive,可这组数据与消息类不配,序列化一直进行,服务器进入不响应状态,如何处理???
      

  3.   

    很简单你在Accept时取得对方的连接地址及端口看对方的地址及端口是否合法即可如果不合法则断开.
      

  4.   

    我的理解: 诸如http, smtp等等, 你对它的连接请求有固定的命令, 这样你就能够通过返回来(或是接收来的)的参数来判断请求是否非法了~~
      

  5.   

    请仔细阅读我之前的提问,其实很多网络编程的书里都是这样教的,但有bug
      

  6.   

    solarde的方法很好!
    如果你需要加上身份认证,倒是有一个很经典的代码,你可以去搜索一下 "w3mfc",
    good luck!
      

  7.   

    请教solar你读消息是用的什么类?CSocket这种级别好象是不行的
      

  8.   

    CSocket我没用过, 用socket sdk的话直接处理recv来的数据不是更好吗? 没感觉CSocket同socket sdk有多简单之处~~~
      

  9.   

    我是直接用的winsock API,以便于在Unix和Windows间的移植
      

  10.   

    别用什么 CSocket 了,用API 多方便,这个是个简单问题,好像跟 绝对高手 没有什么关系,像我这种 菜鸟 也许都能搞定
      

  11.   

    同意 solar( int argc , char* argv[] )