Recv接收数据时,为什么会接收到相同的数据,该如何处理

Recv接收数据时,为什么会接收到相同的数据
IOCP每300毫秒从数据库中,取出一数据,向客户端发送。
客户端接收的代码

.................................
while(pcs->m_thexit)
{
memset(szBuf,0,Recv_BUF_SIZE);
iRet = recv(pcs->m_ServerSocket,szBuf, Recv_BUF_SIZE, 0);//iRet = recv(pcs->m_ServerSocket,(char*)szBuf, Recv_BUF_SIZE, 0);
if (iRet>0) 
{
memset(cprbf.buf,0,sizeof(cprbf.buf));
memcpy(cprbf.buf,szBuf,strlen(szBuf));
EnterCriticalSection(&m_pagespilt);
pcs->m_revpage.AddTail(cprbf);
LeaveCriticalSection(&m_pagespilt);
continue;
}
........................................

我将接收到的数据,压入链表中,专门开一个线程,来解释链表中的数据,

服务器:线路是电信的(地点北京A)

如果我本机(电信的,地点北京B)用客户来接收,能完整且接收的数据,没有重复的

如果把客户端,放到(联通,地点北京C)来接收数据,接收的数据,会出现大量重复的,且数目不少了一些

全是外网来测试的,为什么会出现这种情况,我应该怎么处理了
------解决方案--------------------
会不会是联通的网络问题等