psycheqiqi 发表于 2009-10-14 13:39:19

TMD,果然是ACE_MESSAGE_BLOCK的问题

int WriteDate(char *szSendBuf, int nSendCnt)
{
ACE_Message_Block *smb = new ACE_Message_Block(nSendCnt+1);
smb->copy(szSendBuf,nSendCnt+1);      
int nResult = this->writer_.write(*smb,nSendCnt+1);
if ( nResult != 0)
{
   ACE_TRACE("Write data failed!");
}

return nResult;
}

之前用的是smb->copy(szSendBuf);没有手工使用wr_ptr();
因为它会帮你把字符串末尾的0也复制,长度也会多1.这个特性可能会在你拼接二进制协议时带来一些古怪的问题.

切记切记!!!

sevencat 发表于 2009-10-14 17:52:15

smb->copy(szSendBuf,nSendCnt+1);   
我一般直接用这个版本。
页: [1]
查看完整版本: TMD,果然是ACE_MESSAGE_BLOCK的问题