ZHCU938C May 2018 – January 2021 CC3100 , CC3100MOD , CC3200 , CC3200MOD
根据具体实现情况,选择在有或没有操作系统的情况下运行应用。通常,在没有操作的情况下运行应用时,使用 sl_SetSockOpt() 将套接字选项设置为非阻塞机制,即第三方参数为 SL_SO_NONBLOCKING。但是,基于操作系统的应用可以选择执行多线程,并可处理阻塞函数。
Status = sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING,
&nonBlockingValue, sizeof(nonBlockingValue)) ;
如果使用了阻塞机制,则这些函数会阻塞,直至执行完成。
如果使用了非阻塞机制,则这些函数会返回错误代码。错误代码的值取决于所使用的函数。详细信息,请参阅在线文档。
sl_Connect()、sl_Accept()、sl_Aend()、sl_Aendto()、sl_Recv() 和 sl_Recvfrom() 受此标志影响。如果未设置,则默认使用阻塞机制。
客户端应用中的 sl_Connect() 示例:
Status = sl_Connect(SockID, ( SlSockAddr_t *) &Addr, AddrSize);
while( Status < 0 )
{
Status = sl_Connect(SockID, ( SlSockAddr_t *)&Addr, AddrSize);
if( Status == SL_EALREADY )
{
/* 在下一次重试之前等待 1 毫秒 */
Delay(1);
}
else if( Status < 0 )
{
return -1; //Error
}
/* 在重新尝试连接之前执行其他任务 */
}