有一个AsyncSocket连DB, 发一些command过去然后接收从DB来的信息, 现在想在它接完后有一个事件通知我它接完了, 有什么办法实现呢?这里有一个情况要说明的, 那些发过去的command不一定会有Message从DB回来的

解决方案 »

  1.   

    没有返回了, 就会超时?超时能说明该Socket已经接收完了?
      

  2.   

    一般在用AsyncSocket的时候, 都会有这么一段:
    private void ReceiveCallback(IAsyncResult ar)
    {
    //some other code
    //...int bytesRead=asyncSocket.EndReceive(ar);
    if(bytesRead>0)
    {
    //Received data
    //some other code
    //...asyncSocket.BeginReceive(stateObject.buffer,0,StateObject.BufferSize,0,
                        new AsyncCallback(ReceiveCallback), stateObject);
    }
    else
    {
    //Finish received data
    }
    }为什么在最后一次的asyncSocket.BeginReceive并没有调用AsyncCallBack的ReceiveCallBack呢?
      

  3.   

    如果它最后一次的asyncSocket.BeginReceive并没有调用AsyncCallBack的ReceiveCallBack, 那么我就无从抛出这个OnCompleteEvent了
      

  4.   

    自己定义 结束 命令或协议
    或 disconnect
    或 select socket
    或 DB来的头信息上 有 数据长度
    或 超时
      

  5.   

    楼上的, 具体有没有code看看呢?或者, 说清楚点, 谢谢^^