send会阻塞比较长的时间?
先做一个手机直播项目,发现一个问题,在走3G网络的情况下,发送(send)缓冲区中的数据会耗比较长的时间,夸张的时候达到几十秒,缓冲区的数据不大,一般不会超过1K。协议是TCP,各位大侠,有没有办法让send不要阻塞太长的时间?
关键代码如下:
int CMySocket::sendData(void *buf, int nLen)
{
int nLeft, nWritten;
u8_t* pBuf = (u8_t*)buf;
nLeft = nLen;
while (nLeft > 0)
{
nWritten = send(m_sockfd, pBuf, nLeft,0);
if (nWritten == -1)
{
return nWritten;
}
nLeft -= nWritten;
pBuf += nWritten;
}
return nLen - nLeft;
}