我正在尝试编写一个简单的客户端服务器应用程序,我从客户端发送数据&在服务器端接收它,我需要将该数据存储到公共缓冲区中,然后为每个客户端创建一个文件,并将该公共缓冲区数据打印到文件中。
do
{
int numByte=recv(server,buffer,bufsize,0);
if ( numByte == -1 )
{
printf("ERROR : could not receive bytes \n");
}
//buffer[numByte]='\0';
//bzero(buffer,10000);
for(int i=0;i<10;i++)
{
strcpy(globalBuffer[i],buffer);
//cout<<"Global_buffer:"<<globalBuffer[i];
}
for(int j =0;j<10;j++){
fprintf(fp, "%s",globalBuffer[j]);
}
//strcpy(buffer,globalBuffer[fileNum]);
fflush(fp);
}while(!isExit);
上面的代码片段是我尝试将缓冲区数据复制到globalBuffer中以及稍后将globalBuffer数据打印到文件中的代码片段。我应该为每个文件只打印10个字符串消息但是因为我有do-while循环,并且永远不会结束循环fprintf(fp, "%s",globalBuffer[j])
它不会因为do-while循环结束而且如果我尝试将缓冲区数据存储在do-while循环之外是不可能的,因为do-while循环永远不会结束。
有没有办法避免do-while循环,而不是在recv()函数中有任何标志可以作为do-while循环吗?
答案 0 :(得分:0)
如果recv()
返回零,则应该退出循环,这意味着对等体已断开连接,并且在大多数情况下,当它返回-1时,表示错误。你肯定见过这个吗?