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]缓冲区清零不然会出现乱码,以致接收到的数据也会每次清空,不知道该如何实现这个一直接收的过程,求指点 展开
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]缓冲区清零不然会出现乱码,以致接收到的数据也会每次清空,不知道该如何实现这个一直接收的过程,求指点 展开
1个回答
展开全部
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
追答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询