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;
}