1.前言
主机和AI设备通讯时候,通过send发送小数据,发送和接受都正常。可是发送YUV数据时候,一帧720P数据大概1.3M左右,发送时候就会报错Resource temporarily unavailable错误,只发送了一帧的部分数据,导致该帧数据不完整,无法使用。通过错误码查找,是由于发送缓存池满导致的。
2.代码
int Send(int handle, unsigned char *buf, int len,
int flags, const int selectSec, const int selectUsec)
{
int sendtotal = -1;
int sendlen = 0;
fd_set wset;
struct timeval tv;
FD_ZERO(&wset);
FD_SET(handle, &wset);
tv.tv_sec = selectSec / 1000000;
tv.tv_usec = selectUsec % 1000000;
int result = select(handle + 1, NULL, &wset, NULL, &tv);
if ( result > 0)
{
if (FD_ISSET(handle, &wset))
{
sendtotal = 0;
while(sendtotal < len)
{
sendlen = send(handle, (buf + sendtotal), (len - sendtotal) , flags);
if(sendlen <= 0)
{
perror("-----[send]----:");
return -1;
}
sendtotal += s