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.

[参考译文] CC3100MOD:TCP 多客户端连接

Guru**** 2782445 points

Other Parts Discussed in Thread: CC3100

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/567919/cc3100mod-tcp-multiple-client-connections

器件型号:CC3100MOD
主题中讨论的其他器件:CC3100

大家好、

我想在一台 TCP 服务器上进行 TCP 多客户端连接。 我连接了一个客户端和服务器。 它在工作。

如何将其设为多个。?

如果您有任何示例、请附上。  

此致、

Aravinth

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请搜索 BSD 套接字的教程、例如:
    -使用选择 www.binarytides.com/.../的多个客户端的 TCP 服务器
    -使用线程/任务的多个客户端的 TCP 服务器: www.binarytides.com/.../

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Hnz、
    感谢您的回复。 这是 Linux 示例。 您是否有适用于 CC3100的任何 RTOS 示例?

    此致、
    Aravinth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    该示例对于 Linux 并不重要。 重要的是、此示例使用 BSD 套接字。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    我从您的示例中尝试过。 它正在接收一些数据包、然后进入 StackOverFlow (vApplicationStackOverflowHook)

    此致、
    Aravinth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您需要根据平台正确实施内存/线程处理。 这些示例并非在所有平台上都"可以使用"。 这些示例可用作代码的基础。 本示例详细介绍了如何在 TCP 服务器中为多个客户端使用 BSD 套接字。

    1月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jan、

    这是我的代码。 我遇到 StackOverFlow (vApplicationStackOverflowHook)错误。 您能不能说出您在该代码上发现的任何错误。

    #define STACKSIZE_WiFITASK   256

    #define STACKSIZE_WiFiRevTASK   128

    静态_i32 wifi TcpServerInit (_U16端口)

     LocalAddr.Sin_Family = SL_AF_iNet;

      LocalAddr.Sin_port = sl_Htons ((_U16) Port);

      LocalAddr.Sin_addr.s_addr = 0;

      SockID = sl_Socket (sl_AF_iNet、sl_sock_stream、0);

      if (SockID < 0)

      {

      UARTprintf ("[TCP Server]创建套接字错误\n\r");

        ASSERT_ON_ERROR (SockID);

      }

      UARTprintf ("[TCP Server]创建套接字成功\n\r");

      AddrSize = sizeof (SlSockAddrIn_t);

      状态= sl_Bind(SockID,(SlSockAddr_t *)&LocalAddr,AddrSize);

      if (状态< 0)

      {

        sl_close (SockID);

        UARTprintf ("[TCP Server]套接字地址分配错误\n");

        ASSERT_ON_ERROR (状态);

      }

      UARTprintf ("[TCP Server]套接字地址分配成功\n"\});

      状态= sl_listen (SockID、7);

      if (状态< 0)

      {

        sl_close (SockID);

        UARTprintf ("[TCP Server]侦听错误\n\r\n);

        ASSERT_ON_ERROR (状态);

      }

      UARTprintf ("[TCP Server]侦听成功\n\r\n);

      while (1)

      {

      newSockID = sl_accept (SockID、(struct SlSockAddr_t *)&Addr、

                   (SlSockklen_t*) AddrSize);

      if (newSockID < 0)

      {

        sl_close (SockID);

        UARTprintf ("[TCP Server]接受连接错误\n\r");

        ASSERT_ON_ERROR (newSockID);

      }

      UARTprintf ("[TCP Server]接受连接成功\n\r\n);

      UARTprintf ("连接计数=%d \r\n"、++count);

      TCPServer_RevDataTaskInit (newSockID);

      }

    //

    //

    //这是 CC3100 WiFi TCPServer_RevDataTask

    //

    //

    静态空

    TCPServer_RevDataTask (void *pvParameters)

      _i16      状态= 0;

      _U16计数= 0;

      _i16      recvSize = 0;

      UARTprintf ("[TCP Server] pvParameters =%d \n\r\n、pvParameters);

      while (1)

      {

        recvSize = BUF_SIZE;

        操作

        {

        status = wifi TcpServerRevData (((uint32_t) pvParameters、&(data_buf[BUF_size - recvSize])、recvSize、0);

          if (状态<=0)

          {

          WiFi_TcpServerClose ((uint32_t) pvParameters);

          UARTprintf ("[TCP Server]数据恢复错误\n\r\n);

            // wify_connection = false;

            // assert_ON_ERROR (tcp_RECV_ERROR);

          }

           recvSize --=状态;

        }while (recvSize >0);

        UARTprintf ("[TCP Server] pvParameters =%d Count =%d \r\n"、pvParameters、++count);

      }

    //

    //

    //初始化 TCPServer_RevDataTaskInittask。

    //

    //

    uint32_t

    TCPServer_RevDataTaskInit (_i16 TCPSockID)

      //

      //创建 WiFi 任务。

      //

      if (xTaskCreate (TCPServer_RevDataTask、(const portCHAR *)"TCPServer_RevDataTask"、

      STACKSIZE_WiFiRevTASK、(void *) TCPSockID、

             tskIDLE_PRIORITY + PRIORY_WiFi_TASK、NULL)!= pdTRUE)

      {

        退货(1);

      }

     

    此致、

    Aravinth