是控制台模式,没有windows窗体
就是说我编程如何能得到这一个事件,不管什么方法(当然是标准的) 
是注册回调函数?如果是 那么怎么注册回调函数? 
是轮询的到?如果是 那么我查询什么,那个标志位,还是会有特殊消息? 
或者还有其他方法,那么这方法是什么?类似需要的得到的事件,还有接收 客户端连接事件。而且还有,不管是主动断开连接,还是异常断开连接,我都需要知道,最好能区分开

解决方案 »

  1.   

    可以创建个隐藏的窗口,从而采用WSAAsyncSelect模型,注册FD_CLOSE网络事件即可也可直接采用select模型,连接断开recv会返回一个错误代码的..
      

  2.   


    很多异常断开连接,无论是用select(),WSAAsyncSelect()还是WEventSelect()等都是无法捕捉到的,所以这才叫"异常断开".这些无法正常检测到的断开,你的程序就要定制一个"超时处理模块",设定在多长时间内没有数据传输的连接就要被断开(例如10分钟).如果没有这个模块,如果你的程序是运行很长时间并有不少用户连接的话,程序会积累越来越多的"僵尸连接",浪费系统资源,最后如果积聚了很大量的"僵尸连接",有可能用尽系统资源,令程序无法再正常工作.
      

  3.   

    send和recv返回为0时表示连接已经断开