|  | 
 
| 复制代码void CMyClient::handle_read_stream (const ACE_Asynch_Read_Stream::Result &result){        //开始读操作        //显示读取的信息         //        result.message_block ().rd_ptr ()[result.bytes_transferred ()] = '\0';        if (result.success () && result.bytes_transferred () != 0)        {                 int recvlen=result.bytes_transferred();                 BYTE* recvBuf=(BYTE*)(result.message_block().rd_ptr());                  pMain->Decomposition(recvBuf,recvlen,partBuf);//44 48分解开来                result.message_block ().release();                // 如果还存在未读取数据,则继续读取                if (this->initiate_read_stream () == -1)                {                        pMain->MyLineAdd_to_list(SYSTEM_ERROR,NULL_INFO,_T("分配读空间失败!"));                        return;                }        }        else        {                //不存在,则释放消息块并关闭SOCKET连接                /***********************************************/                if(result.bytes_transferred () == 0) [b][color=Red]//此处已成立,但之后数据继续来,为什么?[/color][/b]                        pMain->Process_S_Server_is_closed[color=Red][b]();//这样的结果十分影响我自己的处理[/b][/color]                result.message_block ().release ();                /***********************************************///                 ACE_OS::shutdown(this->handle(), ACE_SHUTDOWN_BOTH);//                 ACE_OS::closesocket (result.handle());                delete this;        }}
 | 
 |