Recv 能接收大批量的数据吗,该怎么处理
Recv 能接收大批量的数据吗
CList <recvMsg,recvMsg> m_clist;//接收链表
我将接收到的数据,压入链表,专门开启一个线程来处理链表中的数据,如果服务器,向客户到狂甩数据,recv能响应过来吗,如果不能,应该怎么修改呀
------解决方案--------------------
可以的,网络速度通常有限。
而且tcp协议有flow control,不会过快地发送数据导致另一端来不及接收。
CList <recvMsg,recvMsg> m_clist;//接收链表
............................
recvMsg msggrvd;
while(pcs->m_thexit)
{
iRet = recv(pcs->m_ServerSocket, (char *)szBuf, Recv_BUF_SIZE, 0);
memset(szBuf,0,Recv_BUF_SIZE);
memset(&msggrvd,0,sizeof(msggrvd));
if (iRet>0)
{
if(szBuf != NULL && szBuf[0] != _T(''))
{
if(iRet>sizeof(msggrvd))
memcpy(&msggrvd,szBuf,sizeof(msggrvd));
else
memcpy(&msggrvd,szBuf,iRet);
EnterCriticalSection(&m_GetRecvData);
pcs->m_clist.AddTail(msggrvd);
LeaveCriticalSection(&m_GetRecvData);
}
}
........................................
我将接收到的数据,压入链表,专门开启一个线程来处理链表中的数据,如果服务器,向客户到狂甩数据,recv能响应过来吗,如果不能,应该怎么修改呀
------解决方案--------------------
可以的,网络速度通常有限。
而且tcp协议有flow control,不会过快地发送数据导致另一端来不及接收。