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.

CC3200SDK: cc3200作为创建多个套接字,连接多个服务器,有异常

Part Number: CC3200SDK
Other Parts Discussed in Thread: CC3200

cc3200作为创建多个套接字,连接多个服务器时,有异常

  • 您好,

    CC3200可以同时支持 8 sockets,这意味着可以同时创建和连接最多 8 个 TCP 客户端。

    常见的方法是 TCP 客户端使用单独的线程。其他选项可以是使用 sl_Select() API 的单线程。

    您的异常情况具体指的是什么?

  • 感谢您的回复,下面是我建立两个TCP的连接,报错都ASSERT_ON_ERROR(CONNECT_ERROR);

    /*tcp0*/
        //filling the TCP server socket address
        sAddr[0].sin_family = SL_AF_INET;
        sAddr[0].sin_port = sl_Htons((unsigned short)usPort);
        sAddr[0].sin_addr.s_addr = sl_Htonl((unsigned int)g_ulDestinationIp);

        iAddrSize[0] = sizeof(SlSockAddrIn_t);

        // creating a TCP socket
        iSockID[0] = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
        if( iSockID[0] < 0 )
        {
            ASSERT_ON_ERROR(SOCKET_CREATE_ERROR);
        }

       
        // connecting to TCP server
        iStatus[0] = sl_Connect(iSockID[0], ( SlSockAddr_t *)&sAddr[0], iAddrSize[0]);
        if( iStatus[0] < 0 )
        {
            // error
            sl_Close(iSockID[0]);      
            ASSERT_ON_ERROR(CONNECT_ERROR);
        }
        /*tcp1*/
        //filling the TCP server socket address
        sAddr[1].sin_family = SL_AF_INET;
        sAddr[1].sin_port = sl_Htons((unsigned short)usPort);
        sAddr[1].sin_addr.s_addr = sl_Htonl((unsigned int)IP_ADDR2);

        iAddrSize[1] = sizeof(SlSockAddrIn_t);

        // creating a TCP socket
        iSockID[1] = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
        if( iSockID[1] < 0 )
        {
            ASSERT_ON_ERROR(SOCKET_CREATE_ERROR);
        }

       
        // connecting to TCP server
        iStatus[1] = sl_Connect(iSockID[1], ( SlSockAddr_t *)&sAddr[1], iAddrSize[1]);
        if( iStatus[1] < 0 )
        {
            // error
            sl_Close(iSockID[1]);      
            ASSERT_ON_ERROR(CONNECT_ERROR);
        }
  •  也就是在单线程情况下,一般使用sl_Select() API 建立多个TCP客户端吧,我在serial_wifi.c中找到了参考代码,感谢您的指点

  • 有sl_Select建立多个tcp客户端的参考用例吗?

  • 有sl_Select建立多个tcp客户端的参考用例吗?

    CC3200 设备支持类似 BSD 的套接字。在互联网(以及 e2e 论坛)上,您可以找到许多如何为多个同时连接的客户端创建 TCP 服务器的示例。

    参考一下这个链接:https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/658686/cc3100mod-multi-threaded-sl_select/2419780#2419780

  • 下面是我建立两个TCP的连接,报错都ASSERT_ON_ERROR(CONNECT_ERROR);

    根据您提供的代码,出现的原因和建议有:

    1.TCP 服务器未响应、网络问题或连接参数设置不正确导致。

    2.宏 ASSERT_ON_ERROR 的触发条件不仅仅是连接错误,您可以了解一下具体的触发条件

    3.连接错误时,打印出具体的错误码或错误信息