2016-12-26 58 views
0

我想寫一個簡單的客戶端服務器應用程序,我從客戶端&發送數據,在服務器端收到它,我需要將該數據存儲到公用緩衝區,然後爲每個客戶端創建一個文件並打印將常用緩衝區數據存入文件如何在不使用while(true)的情況下使用recv函數?

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

如果recv()返回0,表示對等體已斷開連接,並且在大多數情況下返回-1時表示出現錯誤,那麼您應該退出循環。你確定見過這個?

+0

是的好謝謝你,我得到了最終結果..! – Shivakumar

+1

@Shivakumar很難說這意味着什麼,但是你應該考慮提高和/或接受你認爲有用的答案。 – EJP

相關問題