高手请进:CSocket+CObList=重复接受第一次的数据?
如题,使用CSocket发送数据,每次发送的数据集合用CObList存储,数据每次递增1,但是为什么每次接受到的都是第一次的数据?
请各位高手帮忙看看!
//数据定义:
class CNetMsg : public CObject
{
DECLARE_SERIAL(CNetMsg);
public:
virtual ~CNetMsg(){}
virtual CString GetMessage() {ASSERT(false);return CString(_T(""));};
};
class CPlayerMsg : public CNetMsg
{
DECLARE_SERIAL(CPlayerMsg);
public:
int id;
CString name;
CString GetMessage()
{
CString s;
s.Format(_T("Player ID: %d, Player Name: %s"), id, (LPCTSTR)name);
return s;
}
void Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar << id;
ar << name;
}
else
{
ar >> id;
ar >> name;
}
}
};
typedef CObList MsgQueue;
// 发送代码:
static int i = 0;
i++;
CPlayerMsg pm;
pm.id = i;
pm.name = _T("Jerry");
MsgQueue mq;
mq.AddHead(&pm);
mq.Serialize(*m_pArOut);
// 接收代码:
MsgQueue mq;
mq.Serialize(*m_pArIn);
for (int i = 0; i < mq.GetSize(); i++)
{
CNetMsg * pNetMsg = static_cast<CNetMsg*>(mq.GetHead());
CString msg = pNetMsg->GetMessage();
msg += _T(" ") + CTime::GetCurrentTime().Format(_T("%H:%M:%S")); // 接收加时间戳
TRACE("%s\n", msg);
}