TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3220 socket 超时设置,第二次设置时报SL_ERROR_BSD_EBADF(-9)错误

在进行CC3220TCP socket接受超时设置时,创建TCP socket,第一次连接上client时,可以正确设置TCP socket超时,断开连接时,第二次设置超时,报错SL_ERROR_BSD_EBADF(-9)

// waiting for an incoming TCP connection
clientfd=SL_ERROR_BSD_EAGAIN;
while( clientfd < 0 )
{
// accepts a connection form a TCP client, if there is any
// otherwise returns SL_EAGAIN
clientfd = accept(server, (struct sockaddr *)&clientAddr, &addrlen);
if( clientfd == SL_ERROR_BSD_EAGAIN )
{
usleep(10000);
}
else if( clientfd < 0 )
{
// error
sl_Close(clientfd);
sl_Close(server);
return(NULL);
// ASSERT_ON_ERROR(ACCEPT_ERROR);
}
}

TimeVal.tv_sec = 7; // Seconds
TimeVal.tv_usec = 0; // Microseconds. 10000 microseconds resolution

// setting socket option to enable receive timeout
status = sl_SetSockOpt(clientfd, SL_SOL_SOCKET, SL_SO_RCVTIMEO,
(_u8 *)&TimeVal, sizeof(TimeVal));
if(status < 0)
{
UART_PRINT("[line:%d, error:%d] %s\n\r", __LINE__, status,
SL_SOCKET_ERROR);
sl_Close(clientfd);
sl_Close(server);
return(NULL);
}

Viki Shi:

#define SL_ERROR_BSD_EBADF(-9L)/* Bad file number */

TCP socket的操作建议参考下Network Terminal例程

赞(0)
未经允许不得转载:TI中文支持网 » CC3220 socket 超时设置,第二次设置时报SL_ERROR_BSD_EBADF(-9)错误
分享到: 更多 (0)