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

CC3200 sl_Recv() 函数阻塞

请问下:

      我把CC3200设置在STA -> TCP  Server模式,

long            lNonBlocking = 1;

iStatus = sl_SetSockOpt(iSockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING, &lNonBlocking, sizeof(lNonBlocking));

已经设置成非阻塞,在  sl_Accept()中已经是非阻塞了。但当有客户端连上,执行sl_Recv()函数时。

在连接没断开和不发数据的情况下,就一直阻塞在那。

只有客户端断开连接或者发送数据才能跳出sl_Recv()函数。

iStatus = sl_Recv(iNewSockID, g_cBsdBuf, iTestBufLen, 0);

有没什么办法能让sl_Recv()在不断开连接和不发数据的情况下,也能跳出。或者阻塞时间可调。

谢谢!!!

Yang Patrick:

问题解决:原来是参数传递错误。

如果CC3200工作在 TCP  Server模式,iStatus = sl_SetSockOpt(iSockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING, &lNonBlocking, sizeof(lNonBlocking)),只是设置CC3200在sl_Accept()是非阻塞。在客户端连上后sl_Accept()会返回客户端Socket,这时要接收客户端数据

sl_Recv(客户端Socket, g_cBsdBuf, iTestBufLen, 0);如果要设置非阻塞,

就要在sl_Accept()之后执行 sl_SetSockOpt(客户端Socket, SL_SOL_SOCKET, SL_SO_NONBLOCKING, &lNonBlocking, sizeof(lNonBlocking));

然后再sl_Recv(客户端Socket, g_cBsdBuf, iTestBufLen, 0);

这样才能在接收数据时非阻塞

user1878904:

回复 Yang Patrick:

我之前都试过, 没有效果呢!

奇怪

赞(0)
未经允许不得转载:TI中文支持网 » CC3200 sl_Recv() 函数阻塞
分享到: 更多 (0)