|
- 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;
- }
- }
复制代码 |
|