This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3100 TCP Socket NonBlocking 报错

Other Parts Discussed in Thread: CC3100

伙伴们:
使用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 */
代码有问题?