TCP send 發送大數據量的問題

 

int sendTCP(SOCKET& socketfd,TString strXml)
{
 int iContLen = strXml.length();
 int iSendLen = 0;
#ifndef WIN32

 fd_set scanSet;
 FD_ZERO(&scanSet);
 FD_SET(socketfd,&scanSet);

 time_t tBeg, tEnd;
 time(&tBeg);

 // 最多等待 20 毫秒
 struct timeval waitTime;
 waitTime.tv_sec  = 0;
 waitTime.tv_usec = 20000;
 int tmp = -1;


 while(iSendLen < iContLen)
 {
  int iLen  = send(socketfd,strXml.substr(iSendLen).c_str(),iContLen - iSendLen,0);
  if (iLen > 0 )
  {//
   iSendLen += iLen;
   //printf("\n send %d/%d",iSendLen,iContLen);
   //更新時間
   time(&tBeg);
  }
  else
  {
   //printf("\n send failed %d/%d",iSendLen,iContLen);
   time(&tEnd);
   if (tEnd - tBeg> 3)
   {//連續3秒不可寫 認爲出現錯誤
    printf("\n dTimeEnd - dTimeBeg  > 1");
    return -1;
   }
   usleep(200);
  }
 

 }
#endif
 return iSendLen;
   
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章