MFC 中的socket通信recv上下2次接收内容比较,该怎么解决

MFC 中的socket通信recv上下2次接收内容比较
我用recv收到机器发过来的消息。
recv(f_socket,ptr,len,0);

发送内容一样,我想比较上一次和下一次接收的内容,如何比较。
void CCTestDlg::OnBnClickedBtnSend()
{
while(f_socket!=INVALID_SOCKET)
{
int ret=send(f_socket,buffer,len1,0);

int nRetLen = recv(f_socket, ptr, len,0 );

}
}
大致代码就这样。如果我用strcpy把ptr内容copy到一个buf空间,但是当我下一次再接收的时候,会把第一次的内容覆盖。不能比较了。怎么修改。
------解决方案--------------------
可以用vector,每次接收到的数据push_back。
------解决方案--------------------
添加一个int型的成员变量来标记下当前buff的下标
------解决方案--------------------
cstring a;
cstring b;
a接收第一次数据,b接收第二次数据
进行a,b比较操作
比较完成,复制数据b到a,清空b
b接收第三次数据,再进行比较,不知道楼主是不是这么个意思

------解决方案--------------------
引用:
Quote: 引用:

cstring a;
cstring b;
a接收第一次数据,b接收第二次数据
进行a,b比较操作
比较完成,复制数据b到a,清空b
b接收第三次数据,再进行比较,不知道楼主是不是这么个意思


我的这个 没有循环。 我的recv直接就是先给机器发送,然后recv机器反馈的消息。按照你这样,我copy第一次的数据到a,下次再接收消息的时候,走的还是第一次的老路子,还是会copy到a,会把原数据覆盖的。


第一次到a,第二次到b,然后进行比较,不可以?
或者你就用一个队列或容器,每次收到就往里面插,插到一定数值以后可以把前面的都清空,然后再重新插入,这个应该很好实现的
------解决方案--------------------
strcpy遇到‘\0’就结束拷贝,如果ptr所指的内存很长一段都没有'\0',那不是...

用strncpy,或者memcpy。你不是有nRetLen收到的字节数...

比较的话,要将所有接收的buf都保存,用1L说的vector,这样就都在了,你想怎么比较就怎么比较