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.这个特性可能会在你拼接二进制协议时带来一些古怪的问题.
切记切记!!! smb->copy(szSendBuf,nSendCnt+1);
我一般直接用这个版本。
页:
[1]