MFC中清除CAsyncSocket缓冲区

来源:互联网 发布:ios11蜂窝移动数据设置 编辑:程序博客网 时间:2024/05/29 23:24

问题描述:

MFC编程时,使用CAsyncSocket进行通信,当准备接收有用的数据时,发现有无关数据还在socket缓冲区。

解决办法:

1、使用循环调用Receive()直至返回SOCKET_ERROR(其值为-1),将socket缓冲区的无关数据读尽,然后调用自己function()去接受有用的数据,代码如下:

const int MAXRECEIVEBUF = 4096;
char szTemp[MAXRECEIVEBUF];
int bytes = 0;while((bytes=m_ClientSocket.Receive(szTemp,MAXRECEIVEBUF/2)) != SOCKET_ERROR){//接收数据之前,将socket的缓冲区数据清空,receive直到没数据时返回SOCKET_ERRORszTemp[bytes]=0;memset(szTemp,0,bytes);//}
void function();

注意:不要使用shutdown,因为一旦使用shutdown,这个socket也就废弃了。也不要直接去动socket缓冲区,那样做很危险。



0 0
原创粉丝点击