发新话题
打印

Windows Socket编程,接收数据问题

Windows Socket编程,接收数据问题

我在使用Windows Sockets编程遇到了些疑问请大家帮助.

使用MFC时数据可使用CArchive类的对象接收,并且使用IsBufferEmpty()判断是否缓存中的数据已经读取完毕.
而我在Windows Sockets编程时使用recvfrom接收数据,那应该怎么判断缓存是否有未接收的已到达数据呢?
可能有点没说清楚,下面是我自己的一小段代码(程序中的截选,一些变量定义和初始化没给出):

int len = sizeof(sockadd);
char buf1[2048];

memset(buf1,0X00,sizeof(buf1));

int recvlen = recvfrom(sockDS,buf1,sizeof(buf1)-1,0,(LPSOCKADDR)&sockadd,&len);
buf1[recvlen] = 0x00;
printf("recv len:%d\ncontent:%s",recvlen,buf1);

这个是我第一次接收数据,那么如果buf1没有将数据接收完,需要继续接收的时候应该怎么做呢?

TOP

是不是加一个循环就可以拉
whilie(1)
{
int recvlen = recvfrom(sockDS,buf1,sizeof(buf1)-1,0,(LPSOCKADDR)&sockadd,&len);
buf1[recvlen] = 0x00;
printf("recv len:%d\ncontent:%s",recvlen,buf1);
}

另外,你可以查一下msdn,recvfrom默认应该是阻塞的.
也就是只有当你的缓冲区接收到数据的时候,才会返回.
所以,只要函数返回拉,那就是有数据进来了

TOP

发新话题