C++socket程序如何实现持续接收数据

我在C++中运用阻塞模式的socket套接字接收数据存储在charbuf[BUF_SZIE]中,然后对数据进行处理。socket的接收是在按钮中实现的,就是点一下按钮接收... 我在C++中运用阻塞模式的socket套接字接收数据存储在char buf[BUF_SZIE]中,然后对数据进行处理。socket的接收是在按钮中实现的,就是点一下按钮接收一段数据,我想在点完按钮之后一直处于接收数据的状态该如何实现,求各位大神指点一二
ZeroMemory(buf, BUF_SZIE);
retVal = recv(sClient, buf, BUF_SZIE, 0);
if (SOCKET_ERROR == retVal)
{
printf("send failed!\n");
closesocket(sClient);
WSACleanup();
}
由于需要对buf[BUF_SZIE]缓冲区清零不然会出现乱码,以致接收到的数据也会每次清空,不知道该如何实现这个一直接收的过程,求指点
展开
 我来答
wangpaishi
推荐于2017-11-26 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:758万
展开全部
ZeroMemory(buf, BUF_SZIE);

while(true)
{
        retVal = recv(sClient, buf, BUF_SZIE, 0);
if (SOCKET_ERROR == retVal)
{
printf("send failed!\n");
}
else
{
        把buf中的有效数据保存一份到其他地方,比如一个List<BYTE[]> 什么的,一直往里面添加,处理的线程处理了数据后,把处理过的数据从List中删除就可以了
}
}

closesocket(sClient); 
WSACleanup();


为防止卡死主线程,你要创建新线程来执行

更多追问追答
追问
多谢大神,本人编程水平太菜了,请问创建线程这个应该怎么弄呀,可以有一个大致的框架参考下么?最好能留个邮箱交流,最近被这个弄得焦头烂额,求大神指点。
刚刚没有创建线程试了下,真的卡着不动了o(╯□╰)o
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式