微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3100 TCP Socket NonBlocking 报错

CC3100 TCP Socket NonBlocking 报错

时间:10-02 整理:3721RD 点击:

伙伴们:
使用CC3100 TCP Socket 作为Client,以非阻塞连接server,server端监听显示已经连接成功,但是CC3100函数调用结果返回为失败,返回值为SL_EALREADY,如果忽略该返回值,socket能够正常收发,但是现在不能忽略这个返回值。我改怎么办?贴出代码~

_i32 SimpleLink_BsdTcpClient(_u32 ipAddr,_u16 Port,_u16 *socketID)
{
    SlSockAddrIn_t  Addr;
	SlSockNonblocking_t enableOption;

    _u16          AddrSize = 0;
    _i16          SockID = 0;
    _i16          Status = 0;

    Addr.sin_family = SL_AF_INET;
    Addr.sin_port = sl_Htons((_u16)Port);
    Addr.sin_addr.s_addr = sl_Htonl((_u32)ipAddr);
    AddrSize = sizeof(SlSockAddrIn_t);
	InitializeAppVariables();
    SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
    if( SockID < 0 )
    {
        CLI_Write(" [TCP Client] Create socket Error \n\r");
        ASSERT_ON_ERROR(SockID);
    }
	enableOption.NonblockingEnabled = 1;
	sl_SetSockOpt(SockID,SL_SOL_SOCKET,SL_SO_NONBLOCKING, (_u8 *)&enableOption,sizeof(enableOption)); // Enable/disable nonblocking mode
    Status = sl_Connect(SockID, ( SlSockAddr_t *)&Addr, AddrSize);
	
//    if( Status < 0 )
//    {
//        sl_Close(SockID);
//        CLI_Write(" [TCP Client]  TCP connection Error \n\r");
//        ASSERT_ON_ERROR(Status);
//    }

    *socketID=SockID;
//    Status = sl_Close(SockID);
    ASSERT_ON_ERROR(Status);

    return SL_SUCCESS;
}

sl_SetSockOpt 设置为非阻塞,Status = sl_Connect(SockID, ( SlSockAddr_t *)&Addr, AddrSize); 连接server,server显示连接成功,并且能够正常通信,但是

返回值Status=SL_EALREADY,该值在Sokcet.h中的意义:#define SL_EALREADY (-114) /* Non blocking connect in progress, try again */
代码有问题?

忘记说明了,以阻塞方式使用Socket 连接Server是没有问题的。

iStatus = -1; while( iStatus < 0 ) { iStatus = sl_Connect(iSockID, ( SlSockAddr_t *)&sAddr, iAddrSize); if( iStatus == SL_EALREADY) { MAP_UtilsDelay(10000); } }

但是我Socket已经连接成功了,并且能够正常收发数据,如果收忽略该错误按照上面流程重新连接,尽管成功还是SL_EALREADY错误。

我用的STM32F103,时钟72M,是不是哪里设置超时太短了?导致连接成功还是超时?

调用sl_connect每次返回的都是错误值吗?

还是第一次错误值,后面正常了

每次连接连接状态返回值都显示错误,但是能够正常通信。

每次连接都报这个错误

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top