Developing LwIP Application with Sequential API

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Developing LwIP Application with Sequential API

Developing LwIP Application with Sequential API

LwIP can be used in two basic modes: Mainloop mode (“NO_SYS”)(no OS/RTOS running on target system) or OS mode (TCPIP thread) (there is an OS running on the target system). In mainloop mode, only raw API can be used. In OS mode, raw API and sequential APIs can be used.

In OS mode, the lwip stack and the application run in separate tasks. The application communicates with the LwIP stack through sequential API calls that sue the RTOS mailbox mechaniam for inter-process communicatioin.

This post is focusing on how to design a LwIP applicatioin in OS mode with sequential API in MCUXpresso SDK. It is for LwIP beginners. The code snipperts is from MCUXpresso SDK2.6.

For how to design a LwIP applicaton in mainloop mode (bare metal mode) with raw API, please refer to below link:

Developing LwIP Applications with Raw API  

 

 

Generally, a LwIP application inlcudes network interface setting up, LwIP stack initialization , using LwIP API, and configuration.

 

1. Starting a network interface

To create a new network interface, the user allocates space for a new struct netif (but does not initialize any part of it) and calls netifapi_netif_add:

    IP4_ADDR(&fsl_netif0_ipaddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3);

    IP4_ADDR(&fsl_netif0_netmask, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3);

IP4_ADDR(&fsl_netif0_gw, configGW_ADDR0, configGW_ADDR1, configGW_ADDR2, configGW_ADDR3);

 

    netifapi_netif_add(&fsl_netif0, &fsl_netif0_ipaddr, &fsl_netif0_netmask, &fsl_netif0_gw, &fsl_enet_config0,

                       ethernetif0_init, tcpip_input);

Pass tcpip_input API to netif_add API as input callback function that is called to pass ingress packets up in the protocol layer stack

 

next we need to bring the interface up

An interface that is “up” is available to your application for input and output, and “down” is the opposite state. Therefore, before you can use the interface, you must bring it up. This can be accomplished depending on how the interface gets its IP address.  We can use static IP address  or DHCP.

Set the network interface as the default network interface

netifapi_netif_set_default(&fsl_netif0);

 

Bring the interface up, available for processing

    netifapi_netif_set_up(&fsl_netif0);

2. Initializing LwIP stack

 

Call tcpip_init to create tcpip_thread, this thread has exclusive access to LwIP core functions. Other threads communicate with this thread using message boxes. It also starts all the timers to make sure they are running in the right thread context.

 

tcpip_init(NULL, NULL);

 

void   tcpip_init(tcpip_init_done_fn initfunc, void *arg)

{

  lwip_init();

 

  tcpip_init_done = initfunc;

  tcpip_init_done_arg = arg;

  if (sys_mbox_new(&tcpip_mbox, TCPIP_MBOX_SIZE) != ERR_OK) {

    LWIP_ASSERT("failed to create tcpip_thread mbox", 0);

  }

#if LWIP_TCPIP_CORE_LOCKING

  if (sys_mutex_new(&lock_tcpip_core) != ERR_OK) {

    LWIP_ASSERT("failed to create lock_tcpip_core", 0);

  }

#endif /* LWIP_TCPIP_CORE_LOCKING */

 

  sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);

}

Priority of user task should not exceed the priority of tcpip_thread

  - In lwipopts.h, the priority of tcpip_thread

    #define TCPIP_THREAD_PRIO              2

 

3. Using sequential API

 As shown in the below figure, the steps for establishing a TCP connection on the client side are the following:

  • Create a connection using the netconn_new() function;
  • Connect to the address of the server using the netconn_connect() function;
  • Send and receive data by means of the netconn_recv() and netconn_write() functions.
  • Close the connection by means of the netconn_close() function.

The steps involved in establishing a TCP connection on the server side are as follows:

  • Create a TCP connection with the netconn_new() function;
  • Bind the server to an address using the netconn_bind() function;
  • Listen for connections with the netconn_listen() function;
  • Accept a connection with the netconn_accept() function. This call typically blocks until a client connects with the server.
  • Send and receive data by means of netconn_write() and netconn_recv().
  • Close the connection by means of the netconn_close() function.

 

pastedImage_1.png

Middleware/lwip/contrib/appa/tcpecho/tcpecho.c

static void

tcpecho_thread(void *arg)

{

  struct netconn *conn, *newconn;

  err_t err;

  LWIP_UNUSED_ARG(arg);

 

  /* Create a new connection identifier. */

  /* Bind connection to well known port number 7. */

#if LWIP_IPV6

  conn = netconn_new(NETCONN_TCP_IPV6);

  netconn_bind(conn, IP6_ADDR_ANY, 7);

#else /* LWIP_IPV6 */

  conn = netconn_new(NETCONN_TCP);

  netconn_bind(conn, IP_ADDR_ANY, 7);

#endif /* LWIP_IPV6 */

  LWIP_ERROR("tcpecho: invalid conn", (conn != NULL), return;);

 

  /* Tell connection to go into listening mode. */

  netconn_listen(conn);

 

  while (1) {

 

    /* Grab new connection. */

    err = netconn_accept(conn, &newconn);

    /*printf("accepted new connection %p\n", newconn);*/

    /* Process the new connection. */

    if (err == ERR_OK) {

      struct netbuf *buf;

      void *data;

      u16_t len;

     

      while ((err = netconn_recv(newconn, &buf)) == ERR_OK) {

        /*printf("Recved\n");*/

        do {

             netbuf_data(buf, &data, &len);

             err = netconn_write(newconn, data, len, NETCONN_COPY);

#if 0

            if (err != ERR_OK) {

              printf("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err));

            }

#endif

        } while (netbuf_next(buf) >= 0);

        netbuf_delete(buf);

      }

      /*printf("Got EOF, looping\n");*/

      /* Close connection and discard connection identifier. */

      netconn_close(newconn);

      netconn_delete(newconn);

    }

  }

}

 

From the tcpecho thread, we can see

First, one new TCP connection was called with parameter NETCONN_TCP  by API netconn_new.

#define netconn_new(t)                  netconn_new_with_proto_and_callback(t, 0, NULL)

struct netconn *

netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, netconn_callback callback)

{

  struct netconn *conn;

  API_MSG_VAR_DECLARE(msg);

  API_MSG_VAR_ALLOC_RETURN_NULL(msg);

 

  conn = netconn_alloc(t, callback);

  if (conn != NULL) {

    err_t err;

 

    API_MSG_VAR_REF(msg).msg.n.proto = proto;

    API_MSG_VAR_REF(msg).conn = conn;

    err = netconn_apimsg(lwip_netconn_do_newconn, &API_MSG_VAR_REF(msg));

    if (err != ERR_OK) {

      LWIP_ASSERT("freeing conn without freeing pcb", conn->pcb.tcp == NULL);

      LWIP_ASSERT("conn has no recvmbox", sys_mbox_valid(&conn->recvmbox));

#if LWIP_TCP

      LWIP_ASSERT("conn->acceptmbox shouldn't exist", !sys_mbox_valid(&conn->acceptmbox));

#endif /* LWIP_TCP */

#if !LWIP_NETCONN_SEM_PER_THREAD

      LWIP_ASSERT("conn has no op_completed", sys_sem_valid(&conn->op_completed));

      sys_sem_free(&conn->op_completed);

#endif /* !LWIP_NETCONN_SEM_PER_THREAD */

      sys_mbox_free(&conn->recvmbox);

      memp_free(MEMP_NETCONN, conn);

      API_MSG_VAR_FREE(msg);

      return NULL;

    }

  }

  API_MSG_VAR_FREE(msg);

  return conn;

}

 

Then, the newly created connection is then bound to port 7 (echo protocol) by calling the API function netconn_bind.

 

Next, the application starts the listening process on the connection by calling the API function netconn_listen.

In the infinite while(1) loop, the application waits for a new connection by calling the API function netconn_accept. This API will block the application task when there is no incoming connection.

When there is an incoming connection, the application can start receiving data by calling the API function netconn_recv. Incoming data are received in a netbuf.

 

 

 

Application can get the received data by calling the netbuf API function netbuf_data.

err_t

netbuf_data(struct netbuf *buf, void **dataptr, u16_t *len)

{

  LWIP_ERROR("netbuf_data: invalid buf", (buf != NULL), return ERR_ARG;);

  LWIP_ERROR("netbuf_data: invalid dataptr", (dataptr != NULL), return ERR_ARG;);

  LWIP_ERROR("netbuf_data: invalid len", (len != NULL), return ERR_ARG;);

 

  if (buf->ptr == NULL) {

    return ERR_BUF;

  }

  *dataptr = buf->ptr->payload;

  *len = buf->ptr->len;

  return ERR_OK;

}

 

The received data is sent back (echoed) to the remote TCP client by calling the API function netconn_write.

Netconn_close and netconn_delete are used to respectively close and delete the netconn connection

 

 

4. Configuration LwIP

lwipopts.h is a user file that you can use to fully configure lwIP and all of its modules. You do not need to define every option that lwIP provides; if you do not define an option, a default value will be used. Therefore, your lwipopts.h provides a way to override much of the behavior of lwIP.

In multi theads mode, . We need to #define NO_SYS to 0.

Please refer to evkbimxrt1050_lwip_tcpecho_freertos\source\lwipopts.h

#if USE_RTOS

 

/**

 * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain

 * critical regions during buffer allocation, deallocation and memory

 * allocation and deallocation.

 */

#define SYS_LIGHTWEIGHT_PROT 1

 

/**

 * NO_SYS==0: Use RTOS

 */

#define NO_SYS 0

/**

 * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)

 */

#define LWIP_NETCONN 1

/**

 * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)

 */

#define LWIP_SOCKET 1

 

/**

 * LWIP_SO_RCVTIMEO==1: Enable receive timeout for sockets/netconns and

 * SO_RCVTIMEO processing.

 */

#define LWIP_SO_RCVTIMEO 1

 

 

 

 

 

评论

Daniel,

Don't I need to have an active network connection before making netif API calls? If there is no network cable attached when I call netif_dhcp_start(), but I attach it later, I never see the dhcp state variable go to DHCP_STATE_BOUND. So, I would think there would be a callback or a status variable that lets me know when the link goes up or down, yet I can't seem to find it in either MCUXpresso SDK or LwIP. How is link status detected and reported?

Thanks!

%3CLINGO-SUB%20id%3D%22lingo-sub-1098996%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E4%BD%BF%E7%94%A8%E9%A1%BA%E5%BA%8F%20API%20%E5%BC%80%E5%8F%91%20LwIP%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1098996%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3ELwIP%20%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%A4%E7%A7%8D%E5%9F%BA%E6%9C%AC%E6%A8%A1%E5%BC%8F%E4%B8%8B%E4%BD%BF%E7%94%A8%EF%BC%9A%E4%B8%BB%E5%BE%AA%E7%8E%AF%E6%A8%A1%E5%BC%8F%EF%BC%88%E2%80%9CNO_SYS%E2%80%9D%EF%BC%89%EF%BC%88%E7%9B%AE%E6%A0%87%E7%B3%BB%E7%BB%9F%E4%B8%8A%E6%B2%A1%E6%9C%89%E8%BF%90%E8%A1%8C%20OS%2FRTOS%EF%BC%89%E6%88%96%20OS%20%E6%A8%A1%E5%BC%8F%EF%BC%88TCPIP%20%E7%BA%BF%E7%A8%8B%EF%BC%89%EF%BC%88%E7%9B%AE%E6%A0%87%E7%B3%BB%E7%BB%9F%E4%B8%8A%E6%9C%89%E8%BF%90%E8%A1%8C%E7%9A%84%20OS%EF%BC%89%E3%80%82%E5%9C%A8%E4%B8%BB%E5%BE%AA%E7%8E%AF%E6%A8%A1%E5%BC%8F%E4%B8%8B%EF%BC%8C%E5%8F%AA%E8%83%BD%E4%BD%BF%E7%94%A8%E5%8E%9F%E5%A7%8B%20API%E3%80%82%E5%9C%A8OS%E6%A8%A1%E5%BC%8F%E4%B8%8B%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%8E%9F%E5%A7%8BAPI%E5%92%8C%E9%A1%BA%E5%BA%8FAPI%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%9C%A8OS%E6%A8%A1%E5%BC%8F%E4%B8%8B%EF%BC%8Clwip%E5%A0%86%E6%A0%88%E5%92%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9C%A8%E5%8D%95%E7%8B%AC%E7%9A%84%E4%BB%BB%E5%8A%A1%E4%B8%AD%E8%BF%90%E8%A1%8C%E3%80%82%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%80%9A%E8%BF%87%E9%A1%BA%E5%BA%8F%20API%20%E8%B0%83%E7%94%A8%E4%B8%8E%20LwIP%20%E5%A0%86%E6%A0%88%E8%BF%9B%E8%A1%8C%E9%80%9A%E4%BF%A1%EF%BC%8C%E8%BF%99%E4%BA%9B%20API%20%E8%B0%83%E7%94%A8%E4%BD%BF%E7%94%A8%20RTOS%20%E9%82%AE%E7%AE%B1%E6%9C%BA%E5%88%B6%E8%BF%9B%E8%A1%8C%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E9%87%8D%E7%82%B9%E4%BB%8B%E7%BB%8D%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20MCUXpresso%20SDK%20%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%BA%8F%20API%20%E5%9C%A8%20OS%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E8%AE%BE%E8%AE%A1%20LwIP%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E3%80%82%E5%AE%83%E9%80%82%E7%94%A8%E4%BA%8E%20LwIP%20%E5%88%9D%E5%AD%A6%E8%80%85%E3%80%82%E4%BB%A3%E7%A0%81%E7%89%87%E6%AE%B5%E6%9D%A5%E8%87%AA%20MCUXpresso%20SDK2.6%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%9C%89%E5%85%B3%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%8E%9F%E5%A7%8B%20API%20%E5%9C%A8%E4%B8%BB%E5%BE%AA%E7%8E%AF%E6%A8%A1%E5%BC%8F%EF%BC%88%E8%A3%B8%E6%9C%BA%E6%A8%A1%E5%BC%8F%EF%BC%89%E4%B8%8B%E8%AE%BE%E8%AE%A1%20LwIP%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E8%AF%B7%E5%8F%82%E9%98%85%E4%BB%A5%E4%B8%8B%E9%93%BE%E6%8E%A5%EF%BC%9A%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-344907%22%20target%3D%22_blank%22%3E%E4%BD%BF%E7%94%A8%E5%8E%9F%E5%A7%8B%20API%20%E5%BC%80%E5%8F%91%20LwIP%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%3C%2FA%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%E4%B8%80%E8%88%AC%E6%9D%A5%E8%AF%B4%EF%BC%8CLwIP%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%8C%85%E6%8B%AC%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E8%AE%BE%E7%BD%AE%E3%80%81LwIP%20%E5%A0%86%E6%A0%88%E5%88%9D%E5%A7%8B%E5%8C%96%E3%80%81%E4%BD%BF%E7%94%A8%20LwIP%20API%20%E5%92%8C%E9%85%8D%E7%BD%AE%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2012.0pt%3B%22%3E%3CSTRONG%3E1.%20%E5%90%AF%E5%8A%A8%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E8%A6%81%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%EF%BC%8C%E7%94%A8%E6%88%B7%E9%9C%80%E8%A6%81%E4%B8%BA%E6%96%B0%E7%9A%84%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3Estruct%20netif%3C%2FSPAN%3E%E5%88%86%E9%85%8D%E7%A9%BA%E9%97%B4%EF%BC%88%E4%BD%86%E4%B8%8D%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AE%83%E7%9A%84%E4%BB%BB%E4%BD%95%E9%83%A8%E5%88%86%EF%BC%89%E5%B9%B6%E8%B0%83%E7%94%A8%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23D4D4D4%3B%22%3Enetifapi_netif_add%3C%2FSPAN%3E%20%EF%BC%9A%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20IP4_ADDR(%26amp%3Bfsl_netif0_ipaddr%2C%20configIP_ADDR0%2C%20configIP_ADDR1%2C%20configIP_ADDR2%2C%20configIP_ADDR3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20IP4_ADDR(%26amp%3Bfsl_netif0_netmask%2C%20configNET_MASK0%2C%20configNET_MASK1%2C%20configNET_MASK2%2C%20configNET_MASK3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3EIP4_ADDR(%26amp%3Bfsl_netif0_gw%2C%20configGW_ADDR0%2C%20configGW_ADDR1%2C%20configGW_ADDR2%2C%20configGW_ADDR3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22background%3A%20%23D4D4D4%3B%22%3Enetifapi_netif_add%3C%2FSPAN%3E(%26amp%3Bfsl_netif0%2C%20%26amp%3Bfsl_netif0_ipaddr%2C%20%26amp%3Bfsl_netif0_netmask%2C%20%26amp%3Bfsl_netif0_gw%2C%20%26amp%3Bfsl_enet_config0%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20ethernetif0_init%2C%20tcpip_input)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E5%B0%86%3CSTRONG%3Etcpip_input%3C%2FSTRONG%3E%20API%20%E4%BC%A0%E9%80%92%E7%BB%99%3CSTRONG%3Enetif_add%3C%2FSTRONG%3E%20API%20%E4%BD%9C%E4%B8%BA%E8%BE%93%E5%85%A5%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0%EF%BC%8C%E8%AF%A5%E5%87%BD%E6%95%B0%E8%A2%AB%E8%B0%83%E7%94%A8%E4%BB%A5%E5%9C%A8%E5%8D%8F%E8%AE%AE%E5%B1%82%E5%A0%86%E6%A0%88%E4%B8%AD%E5%90%91%E4%B8%8A%E4%BC%A0%E9%80%92%E5%85%A5%E5%8F%A3%E6%95%B0%E6%8D%AE%E5%8C%85%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E6%8E%A5%E4%B8%8B%E6%9D%A5%EF%BC%8C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%90%AF%E7%94%A8%E8%AF%A5%E6%8E%A5%E5%8F%A3%3C%2FP%3E%3CP%3E%E2%80%9Cup%E2%80%9D%20%E7%8A%B6%E6%80%81%E7%9A%84%E6%8E%A5%E5%8F%A3%E5%8F%AF%E7%94%A8%E4%BA%8E%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%BE%93%E5%85%A5%E5%92%8C%E8%BE%93%E5%87%BA%E6%93%8D%E4%BD%9C%EF%BC%8C%E2%80%9Cdown%E2%80%9D%20%E5%88%99%E6%98%AF%E7%9B%B8%E5%8F%8D%E7%9A%84%E7%8A%B6%E6%80%81%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E5%9C%A8%E4%BD%BF%E7%94%A8%E6%8E%A5%E5%8F%A3%E4%B9%8B%E5%89%8D%EF%BC%8C%E5%BF%85%E9%A1%BB%E5%85%88%E5%90%AF%E7%94%A8%E5%AE%83%E3%80%82%E5%90%AF%E7%94%A8%E6%96%B9%E5%BC%8F%E5%8F%96%E5%86%B3%E4%BA%8E%E6%8E%A5%E5%8F%A3%E8%8E%B7%E5%8F%96%20IP%20%E5%9C%B0%E5%9D%80%E7%9A%84%E6%96%B9%E5%BC%8F%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E9%9D%99%E6%80%81%20IP%20%E5%9C%B0%E5%9D%80%E6%88%96%20DHCP%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%B0%86%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%20text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Enetifapi_netif_set_default(%26amp%3Bfsl_netif0)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%20text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E5%90%AF%E5%8A%A8%E8%AF%A5%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%87%86%E5%A4%87%E8%BF%9B%E8%A1%8C%E5%A4%84%E7%90%86%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20netifapi_netif_set_up(%26amp%3Bfsl_netif0)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2012.0pt%3B%22%3E%3CSTRONG%3E2.%E5%88%9D%E5%A7%8B%E5%8C%96LwIP%E5%8D%8F%E8%AE%AE%E6%A0%88%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%26nbsp%3B%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%E8%B0%83%E7%94%A8%3CSTRONG%3Etcpip_init%3C%2FSTRONG%3E%E5%88%9B%E5%BB%BAtcpip_thread%EF%BC%8C%E8%AF%A5%E7%BA%BF%E7%A8%8B%E7%8B%AC%E5%8D%A0%E8%AE%BF%E9%97%AELwIP%E6%A0%B8%E5%BF%83%E5%87%BD%E6%95%B0%E3%80%82%E5%85%B6%E4%BB%96%E7%BA%BF%E7%A8%8B%E4%BD%BF%E7%94%A8%E6%B6%88%E6%81%AF%E6%A1%86%E4%B8%8E%E8%AF%A5%E7%BA%BF%E7%A8%8B%E8%BF%9B%E8%A1%8C%E9%80%9A%E4%BF%A1%E3%80%82%E5%AE%83%E8%BF%98%E5%90%AF%E5%8A%A8%E6%89%80%E6%9C%89%E8%AE%A1%E6%97%B6%E5%99%A8%E4%BB%A5%E7%A1%AE%E4%BF%9D%E5%AE%83%E4%BB%AC%E5%9C%A8%E6%AD%A3%E7%A1%AE%E7%9A%84%E7%BA%BF%E7%A8%8B%E4%B8%8A%E4%B8%8B%E6%96%87%E4%B8%AD%E8%BF%90%E8%A1%8C%E3%80%82%3C%2FP%3E%3CP%20style%3D%22margin-left%3A%20.25in%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E8F2FE%3B%22%3Etcpip_init(NULL%2C%20NULL)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E8F2FE%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3Evoid%26nbsp%3B%26nbsp%3B%20tcpip_init(tcpip_init_done_fn%20initfunc%2C%20void%20*arg)%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20lwip_init()%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20tcpip_init_done%20%3D%20initfunc%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20tcpip_init_done_arg%20%3D%20arg%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(sys_mbox_new(%26amp%3Btcpip_mbox%EF%BC%8CTCPIP_MBOX_SIZE)%20!%3D%20ERR_OK)%20%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ASSERT(%22%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%20tcpip_thread%20mbox%22%2C%200)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23if%20LWIP_TCPIP_CORE_LOCKING%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(sys_mutex_new(%26amp%3Block_tcpip_core)%20!%3D%20ERR_OK)%20%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ASSERT(%22%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BAlock_tcpip_core%22%2C%200)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23endif%20%2F*%20LWIP_TCPIP_CORE_LOCKING%20*%2F%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3Esys_thread_new%EF%BC%88TCPIP_THREAD_NAME%EF%BC%8Ctcpip_thread%EF%BC%8CNULL%EF%BC%8CTCPIP_THREAD_STACKSIZE%EF%BC%8CTCPIP_THREAD_PRIO%EF%BC%89%EF%BC%9B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%2021.75pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E7%94%A8%E6%88%B7%E4%BB%BB%E5%8A%A1%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E4%B8%8D%E5%BA%94%E8%B6%85%E8%BF%87%20tcpip_thread%20%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%3C%2FP%3E%3CP%3E-%20%E5%9C%A8%20lwipopts.h%20%E4%B8%AD%EF%BC%8Ctcpip_thread%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%3C%2FP%3E%3CP%3E%23%E5%AE%9A%E4%B9%89%20TCPIP_THREAD_PRIO%202%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2012.0pt%3B%22%3E%3CSTRONG%3E3.%20%E4%BD%BF%E7%94%A8%E9%A1%BA%E5%BA%8F%20API%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%22%3E%E5%A6%82%E4%B8%8B%E5%9B%BE%E6%89%80%E7%A4%BA%EF%BC%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%BB%BA%E7%AB%8BTCP%E8%BF%9E%E6%8E%A5%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%A6%82%E4%B8%8B%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%E4%BD%BF%E7%94%A8netconn_new()%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E8%BF%9E%E6%8E%A5%EF%BC%9B%3C%2FLI%3E%3CLI%3E%E4%BD%BF%E7%94%A8netconn_connect()%E5%87%BD%E6%95%B0%E8%BF%9E%E6%8E%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%9C%B0%E5%9D%80%EF%BC%9B%3C%2FLI%3E%3CLI%3E%E9%80%9A%E8%BF%87%20netconn_recv()%20%E5%92%8C%20netconn_write()%20%E5%87%BD%E6%95%B0%E5%8F%91%E9%80%81%E5%92%8C%E6%8E%A5%E6%94%B6%E6%95%B0%E6%8D%AE%E3%80%82%3C%2FLI%3E%3CLI%3E%E9%80%9A%E8%BF%87%20netconn_close()%20%E5%87%BD%E6%95%B0%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%E3%80%82%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E5%BB%BA%E7%AB%8BTCP%E8%BF%9E%E6%8E%A5%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%A6%82%E4%B8%8B%EF%BC%9A%3C%2FP%3E%3CUL%3E%3CLI%3E%E4%BD%BF%E7%94%A8netconn_new()%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BATCP%E8%BF%9E%E6%8E%A5%EF%BC%9B%3C%2FLI%3E%3CLI%3E%E4%BD%BF%E7%94%A8netconn_bind()%E5%87%BD%E6%95%B0%E5%B0%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BB%91%E5%AE%9A%E5%88%B0%E4%B8%80%E4%B8%AA%E5%9C%B0%E5%9D%80%EF%BC%9B%3C%2FLI%3E%3CLI%3E%E4%BD%BF%E7%94%A8netconn_listen()%E5%87%BD%E6%95%B0%E7%9B%91%E5%90%AC%E8%BF%9E%E6%8E%A5%EF%BC%9B%3C%2FLI%3E%3CLI%3E%E4%BD%BF%E7%94%A8%20netconn_accept()%20%E5%87%BD%E6%95%B0%E6%8E%A5%E5%8F%97%E8%BF%9E%E6%8E%A5%E3%80%82%E6%AD%A4%E8%B0%83%E7%94%A8%E9%80%9A%E5%B8%B8%E4%BC%9A%E8%A2%AB%E9%98%BB%E5%A1%9E%EF%BC%8C%E7%9B%B4%E5%88%B0%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%82%3C%2FLI%3E%3CLI%3E%E9%80%9A%E8%BF%87netconn_write()%E5%92%8Cnetconn_recv()%E5%8F%91%E9%80%81%E5%92%8C%E6%8E%A5%E6%94%B6%E6%95%B0%E6%8D%AE%E3%80%82%3C%2FLI%3E%3CLI%3E%E9%80%9A%E8%BF%87%20netconn_close()%20%E5%87%BD%E6%95%B0%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%E3%80%82%3C%2FLI%3E%3C%2FUL%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_1.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_1.png%22%20style%3D%22width%3A%20402px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F93885iBFC21FD0997331AE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_1.png%22%20alt%3D%22pastedImage_1.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E4%B8%AD%E9%97%B4%E4%BB%B6%2Flwip%2Fcontrib%2Fappa%2Ftcpecho%2Ftcpecho.c%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%E9%9D%99%E6%80%81%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%E7%A9%BA%E9%9A%99%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20background%3A%20%23D4D4D4%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Etcpecho_thread%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%EF%BC%88%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Evoid%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E*arg%EF%BC%89%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Estruct%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%23005032%3B%22%3Enetconn%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E*conn%2C%20*newconn%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%23005032%3B%22%3Eerr_t%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Eerr%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3ELWIP_UNUSED_ARG%EF%BC%88%E5%8F%82%E6%95%B0%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%E8%BF%9E%E6%8E%A5%E6%A0%87%E8%AF%86%E7%AC%A6%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%E5%B0%86%E8%BF%9E%E6%8E%A5%E7%BB%91%E5%AE%9A%E5%88%B0%E4%BC%97%E6%89%80%E5%91%A8%E7%9F%A5%E7%9A%84%E7%AB%AF%E5%8F%A3%E5%8F%B7%207%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20background%3A%20%23E0E0E0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23if%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3ELWIP_IPV6%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3Econn%20%3D%20netconn_new(NETCONN_TCP_IPV6)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3Enetconn_bind%EF%BC%88conn%EF%BC%8CIP6_ADDR_ANY%EF%BC%8C7%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23else%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20LWIP_IPV6%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Econn%20%3D%20%3CSTRONG%3Enetconn_new%3C%2FSTRONG%3E%20(%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%230000c0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CEM%3ENETCONN_TCP%3C%2FEM%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%3CSTRONG%3Enetconn_bind%3C%2FSTRONG%3E%20%EF%BC%88conn%EF%BC%8CIP_ADDR_ANY%EF%BC%8C7%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23endif%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20LWIP_IPV6%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%20LWIP_ERROR(%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%232a00ff%3B%22%3E%22%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Etcpecho%3C%2FSPAN%3E%3A%20invalid%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Econn%3C%2FSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%2C%20(conn%20!%3D%20NULL)%2C%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Ereturn%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%3B)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%E5%91%8A%E8%AF%89%E8%BF%9E%E6%8E%A5%E8%BF%9B%E5%85%A5%E7%9B%91%E5%90%AC%E6%A8%A1%E5%BC%8F%E3%80%82%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%20%3CSTRONG%3Enetconn_listen%3C%2FSTRONG%3E(conn)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%E8%80%8C%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%EF%BC%881%EF%BC%89%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%E6%8A%93%E4%BD%8F%E6%96%B0%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20err%20%3D%20%3CSTRONG%3Enetconn_accept%3C%2FSTRONG%3E(conn%2C%20%26amp%3Bnewconn)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Eprintf%3C%2FSPAN%3E%20(%22%E6%8E%A5%E5%8F%97%E6%96%B0%E8%BF%9E%E6%8E%A5%20%25p%5Cn%22%2C%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Enewconn%3C%2FSPAN%3E%20)%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%E5%A4%84%E7%90%86%E6%96%B0%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Eif%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E(err%20%3D%3D%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%230000c0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CEM%3EERR_OK%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E)%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%E7%BB%93%E6%9E%84%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%23005032%3B%22%3Enetbuf%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E*buf%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Evoid%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E*data%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%23005032%3B%22%3Eu16_t%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Elen%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Ewhile%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E((err%20%3D%20%3CSTRONG%3Enetconn_recv%3C%2FSTRONG%3E%20(newconn%2C%20%26amp%3Bbuf))%20%3D%3D%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%230000c0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CEM%3EERR_OK%3C%2FEM%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E)%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Eprintf%3C%2FSPAN%3E%20(%22%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3E%E5%B7%B2%E6%94%B6%E5%88%B0%3C%2FSPAN%3E%5Cn%22)%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Edo%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20netbuf_data(buf%2C%20%26amp%3Bdata%2C%20%26amp%3Blen)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Eerr%20%3D%20%3CSTRONG%3Enetconn_write%3C%2FSTRONG%3E%20(newconn%E3%80%81%E6%95%B0%E6%8D%AE%E3%80%81%E9%95%BF%E5%BA%A6%E3%80%81NETCONN_COPY)%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20background%3A%20%23E0E0E0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23if%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3E0%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20background%3A%20%23E0E0E0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3Eif%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3E(err%20!%3D%20ERR_OK)%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3Eprintf(%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%232a00ff%3B%20background%3A%20%23E0E0E0%3B%22%3E%E2%80%9C%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Etcpecho%3C%2FSPAN%3E%20%3Anetconn_write%3A%E9%94%99%E8%AF%AF%5C%E2%80%9D%25s%5C%E2%80%9D%5Cn%E2%80%9D%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3E%EF%BC%8Clwip_strerr(err))%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%20background%3A%20%23E0E0E0%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20background%3A%20%23E0E0E0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23endif%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%7D%3C%2FSPAN%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%E5%BD%93%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%EF%BC%88netbuf_next%EF%BC%88buf%EF%BC%89%26gt%3B%20%3D%200%EF%BC%89%E6%97%B6%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Enetbuf_delete(buf)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3Eprintf%3C%2FSPAN%3E%20(%22%E8%8E%B7%E5%8F%96%20EOF%EF%BC%8C%E5%BE%AA%E7%8E%AF%5Cn%22)%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F*%20%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%E5%B9%B6%E4%B8%A2%E5%BC%83%E8%BF%9E%E6%8E%A5%E6%A0%87%E8%AF%86%E7%AC%A6%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%3CSTRONG%3Enetconn_close%3C%2FSTRONG%3E%20%EF%BC%88%E6%96%B0%E8%BF%9E%E6%8E%A5%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%3CSTRONG%3Enetconn_delete%3C%2FSTRONG%3E%20%EF%BC%88newconn%EF%BC%89%EF%BC%9B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E4%BB%8E%20tcpecho%20%E7%BA%BF%E7%A8%8B%E4%B8%AD%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%3C%2FP%3E%3CP%3E%E9%A6%96%E5%85%88%EF%BC%8C%E9%80%9A%E8%BF%87%20API%20netconn_new%20%E8%B0%83%E7%94%A8%E5%8F%82%E6%95%B0%3CSPAN%20style%3D%22color%3A%20%230000c0%3B%20font-size%3A%2010.0pt%3B%22%3E%3CEM%3ENETCONN_TCP%3C%2FEM%3E%3C%2FSPAN%3E%E5%BB%BA%E7%AB%8B%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%20TCP%20%E8%BF%9E%E6%8E%A5%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23%E5%AE%9A%E4%B9%89netconn_new%EF%BC%88t%EF%BC%89netconn_new_with_proto_and_callback%EF%BC%88t%EF%BC%8C0%EF%BC%8CNULL%EF%BC%89%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%E7%BB%93%E6%9E%84%20netconn%20*%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3Enetconn_new_with_proto_and_callback%EF%BC%88%E6%9E%9A%E4%B8%BE%20netconn_type%20t%EF%BC%8Cu8_t%20proto%EF%BC%8Cnetconn_callback%20%E5%9B%9E%E8%B0%83%EF%BC%89%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%E7%BB%93%E6%9E%84%20netconn%20*conn%EF%BC%9B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20API_MSG_VAR_DECLARE(msg)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20API_MSG_VAR_ALLOC_RETURN_NULL(msg)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3Econn%20%3D%20netconn_alloc%EF%BC%88t%EF%BC%8C%E5%9B%9E%E8%B0%83%EF%BC%89%EF%BC%9B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%E5%A6%82%E6%9E%9C%EF%BC%88conn%EF%BC%81%3D%20NULL%EF%BC%89%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20err_t%20err%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20API_MSG_VAR_REF(msg).msg.n.proto%20%3D%20proto%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20API_MSG_VAR_REF(msg).conn%20%3D%20conn%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20err%20%3D%20netconn_apimsg(lwip_netconn_do_newconn%2C%20%26amp%3BAPI_MSG_VAR_REF(msg))%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if%20(err%20!%3D%20ERR_OK)%20%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ASSERT(%22%E9%87%8A%E6%94%BE%20conn%20%E8%80%8C%E4%B8%8D%E9%87%8A%E6%94%BE%20pcb%22%2C%20conn-%26gt%3Bpcb.tcp%20%3D%3D%20NULL)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ASSERT(%22conn%20%E6%B2%A1%E6%9C%89%20recvmbox%22%2C%20sys_mbox_valid(%26amp%3Bconn-%26gt%3Brecvmbox))%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23if%20LWIP_TCP%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ASSERT(%22conn-%26gt%3Bacceptmbox%E4%B8%8D%E5%BA%94%E8%AF%A5%E5%AD%98%E5%9C%A8%22%2C%20!sys_mbox_valid(%26amp%3Bconn-%26gt%3Bacceptmbox))%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23endif%20%2F*%20LWIP_TCP%20*%2F%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23if%20!LWIP_NETCONN_SEM_PER_THREAD%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ASSERT(%22conn%20%E6%B2%A1%E6%9C%89%20op_completed%22%2C%20sys_sem_valid(%26amp%3Bconn-%26gt%3Bop_completed))%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3Esys_sem_free(%26amp%3Bconn-%26gt%3Bop_completed)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%23endif%20%2F*%20!LWIP_NETCONN_SEM_PER_THREAD%20*%2F%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3Esys_mbox_free(%26amp%3Bconn-%26gt%3Brecvmbox)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20memp_free(MEMP_NETCONN%2C%20conn)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20API_MSG_VAR_FREE(msg)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%20NULL%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20API_MSG_VAR_FREE(msg)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20return%20conn%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%209.0pt%3B%22%3E%3CEM%3E%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E7%84%B6%E5%90%8E%EF%BC%8C%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8API%E5%87%BD%E6%95%B0netconn_bind%E5%B0%86%E6%96%B0%E5%88%9B%E5%BB%BA%E7%9A%84%E8%BF%9E%E6%8E%A5%E7%BB%91%E5%AE%9A%E5%88%B0%E7%AB%AF%E5%8F%A37%EF%BC%88echo%E5%8D%8F%E8%AE%AE%EF%BC%89%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E6%8E%A5%E4%B8%8B%E6%9D%A5%EF%BC%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8API%E5%87%BD%E6%95%B0netconn_listen%E6%9D%A5%E5%90%AF%E5%8A%A8%E8%BF%9E%E6%8E%A5%E7%9A%84%E7%9B%91%E5%90%AC%E8%BF%87%E7%A8%8B%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E5%9C%A8%E6%97%A0%E9%99%90%E7%9A%84%20while(1)%20%E5%BE%AA%E7%8E%AF%E4%B8%AD%EF%BC%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8%20API%20%E5%87%BD%E6%95%B0%20netconn_accept%20%E7%AD%89%E5%BE%85%E6%96%B0%E7%9A%84%E8%BF%9E%E6%8E%A5%E3%80%82%E5%BD%93%E6%B2%A1%E6%9C%89%E4%BC%A0%E5%85%A5%E8%BF%9E%E6%8E%A5%E6%97%B6%EF%BC%8C%E6%AD%A4%20API%20%E5%B0%86%E9%98%BB%E6%AD%A2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%BB%BB%E5%8A%A1%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E5%BD%93%E6%9C%89%E4%BC%A0%E5%85%A5%E8%BF%9E%E6%8E%A5%E6%97%B6%EF%BC%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8%20API%20%E5%87%BD%E6%95%B0%20netconn_recv%20%E5%BC%80%E5%A7%8B%E6%8E%A5%E6%94%B6%E6%95%B0%E6%8D%AE%E3%80%82%E4%BC%A0%E5%85%A5%E6%95%B0%E6%8D%AE%E5%9C%A8%20netbuf%20%E4%B8%AD%E6%8E%A5%E6%94%B6%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8netbuf%20API%E5%87%BD%E6%95%B0netbuf_data%E6%9D%A5%E8%8E%B7%E5%8F%96%E6%8E%A5%E6%94%B6%E5%88%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3Eerr_t%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3Enetbuf_data%EF%BC%88%E7%BB%93%E6%9E%84%20netbuf%20*buf%EF%BC%8Cvoid%20**dataptr%EF%BC%8Cu16_t%20*len%EF%BC%89%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3ELWIP_ERROR(%22netbuf_data%3A%20%E6%97%A0%E6%95%88%E7%9A%84%20buf%22%2C%20(buf%20!%3D%20NULL)%2C%20%E8%BF%94%E5%9B%9E%20ERR_ARG%3B)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20LWIP_ERROR(%22netbuf_data%3A%20invalid%20dataptr%22%2C%20(dataptr%20!%3D%20NULL)%2C%20return%20ERR_ARG%3B)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20LWIP_ERROR(%22netbuf_data%3A%20invalid%20len%22%2C%20(len%20!%3D%20NULL)%2C%20return%20ERR_ARG%3B)%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(buf-%26gt%3Bptr%20%3D%3D%20NULL)%20%7B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20return%20ERR_BUF%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E*%E6%95%B0%E6%8D%AE%E6%8C%87%E9%92%88%20%3D%20%E7%BC%93%E5%86%B2%E5%8C%BA-%26gt%3Bptr-%26gt%3B%E6%9C%89%E6%95%88%E8%BD%BD%E8%8D%B7%EF%BC%9B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20*len%20%3D%20buf-%26gt%3Bptr-%26gt%3Blen%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%26nbsp%3B%20return%20ERR_OK%3B%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20black%3B%20font-size%3A%209.0pt%3B%22%3E%3CEM%3E%7D%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8%20API%20%E5%87%BD%E6%95%B0%20netconn_write%20%E5%B0%86%E6%8E%A5%E6%94%B6%E5%88%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8F%91%E9%80%81%E5%9B%9E%EF%BC%88%E5%9B%9E%E6%98%BE%EF%BC%89%E5%88%B0%E8%BF%9C%E7%A8%8B%20TCP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3Enetconn_close%E5%92%8Cnetconn_delete%E5%88%86%E5%88%AB%E7%94%A8%E4%BA%8E%E5%85%B3%E9%97%AD%E5%92%8C%E5%88%A0%E9%99%A4netconn%E8%BF%9E%E6%8E%A5%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2012.0pt%3B%22%3E%3CSTRONG%3E4.%E9%85%8D%E7%BD%AELwIP%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3Elwipopts.h%3C%2FSTRONG%3E%E6%98%AF%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E6%96%87%E4%BB%B6%EF%BC%8C%E6%82%A8%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%AE%83%E6%9D%A5%E5%AE%8C%E5%85%A8%E9%85%8D%E7%BD%AE%20lwIP%20%E5%8F%8A%E5%85%B6%E6%89%80%E6%9C%89%E6%A8%A1%E5%9D%97%E3%80%82%E6%82%A8%E4%B8%8D%E9%9C%80%E8%A6%81%E5%AE%9A%E4%B9%89%20lwIP%20%E6%8F%90%E4%BE%9B%E7%9A%84%E6%AF%8F%E4%B8%AA%E9%80%89%E9%A1%B9%EF%BC%9B%E5%A6%82%E6%9E%9C%E6%82%A8%E4%B8%8D%E5%AE%9A%E4%B9%89%E9%80%89%E9%A1%B9%EF%BC%8C%E5%88%99%E5%B0%86%E4%BD%BF%E7%94%A8%E9%BB%98%E8%AE%A4%E5%80%BC%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E4%BD%A0%E7%9A%84%20lwipopts.h%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%80%E7%A7%8D%E8%A6%86%E7%9B%96%20lwIP%20%E5%A4%A7%E9%83%A8%E5%88%86%E8%A1%8C%E4%B8%BA%E7%9A%84%E6%96%B9%E6%B3%95%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%9C%A8%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%A8%A1%E5%BC%8F%E4%B8%8B%EF%BC%8C%E3%80%82%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E5%B0%86%20NO_SYS%20%23define%20%E4%B8%BA%200%E3%80%82%3C%2FP%3E%3CP%3E%E8%AF%B7%E5%8F%82%E8%80%83evkbimxrt1050_lwip_tcpecho_freertos%5Csource%5Clwipopts.h%3C%2FP%3E%3CP%3E%E2%80%A6%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23if%3C%2FSTRONG%3E%3C%2FSPAN%3E%20%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3EUSE_RTOS%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F**%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20SYS_LIGHTWEIGHT_PROT%3D%3D1%EF%BC%9A%E5%A6%82%E6%9E%9C%E6%82%A8%E5%B8%8C%E6%9C%9B%E5%AF%B9%E6%9F%90%E4%BA%9B%E4%BB%BB%E5%8A%A1%E8%BF%9B%E8%A1%8C%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3E%E4%BB%BB%E5%8A%A1%E9%97%B4%3C%2FSPAN%3E%E4%BF%9D%E6%8A%A4%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20%E7%BC%93%E5%86%B2%E5%8C%BA%E5%88%86%E9%85%8D%E3%80%81%E9%87%8A%E6%94%BE%E5%92%8C%E5%86%85%E5%AD%98%E6%9C%9F%E9%97%B4%E7%9A%84%E5%85%B3%E9%94%AE%E5%8C%BA%E5%9F%9F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20%E5%88%86%E9%85%8D%E5%92%8C%E9%87%8A%E6%94%BE%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%26nbsp%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23%E5%AE%9A%E4%B9%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3ESYS_LIGHTWEIGHT_PROT%201%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F**%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20NO_SYS%3D%3D0%3A%20%E4%BD%BF%E7%94%A8%20RTOS%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%26nbsp%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23%E5%AE%9A%E4%B9%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3ENO_SYS%200%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F**%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20LWIP_NETCONN%3D%3D1%3A%20%E5%90%AF%E7%94%A8%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3ENetconn%3C%2FSPAN%3E%20API%20(%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8%20api_lib.c)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%26nbsp%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23%E5%AE%9A%E4%B9%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3ELWIP_NETCONN%201%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F**%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20LWIP_SOCKET%3D%3D1%3A%20%E5%90%AF%E7%94%A8Socket%20API%20(%E9%9C%80%E8%A6%81%E4%BD%BF%E7%94%A8sockets.c)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%26nbsp%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23%E5%AE%9A%E4%B9%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3ELWIP_SOCKET%201%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%2F**%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20LWIP_SO_RCVTIMEO%3D%3D1%3A%20%E5%90%AF%E7%94%A8%E5%A5%97%E6%8E%A5%E5%AD%97%2F%3CSPAN%20style%3D%22text-decoration%3A%20underline%3B%22%3E%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%3C%2FSPAN%3E%E7%9A%84%E6%8E%A5%E6%94%B6%E8%B6%85%E6%97%B6%E5%92%8C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E*%20SO_RCVTIMEO%E5%A4%84%E7%90%86%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20%233f7f5f%3B%22%3E%26nbsp%3B*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%237f0055%3B%20font-size%3A%2010.0pt%3B%22%3E%3CSTRONG%3E%23%E5%AE%9A%E4%B9%89%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3ELWIP_SO_RCVTIMEO%201%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%E2%80%A6%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20color%3A%20black%3B%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1098997%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9A%E4%BD%BF%E7%94%A8%E9%A1%BA%E5%BA%8F%20API%20%E5%BC%80%E5%8F%91%20LwIP%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1098997%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3EDaniel%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%9C%A8%E8%BF%9B%E8%A1%8C%20netif%20API%20%E8%B0%83%E7%94%A8%E4%B9%8B%E5%89%8D%E6%88%91%E4%B8%8D%E9%9C%80%E8%A6%81%E5%BB%BA%E7%AB%8B%E6%B4%BB%E5%8A%A8%E7%9A%84%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E5%90%97%EF%BC%9F%E5%A6%82%E6%9E%9C%E6%88%91%E5%9C%A8%E8%B0%83%E7%94%A8%20netif_dhcp_start()%20%E6%97%B6%E6%B2%A1%E6%9C%89%E8%BF%9E%E6%8E%A5%E7%BD%91%E7%BA%BF%EF%BC%8C%E4%BD%86%E7%A8%8D%E5%90%8E%E6%88%91%E8%BF%9E%E6%8E%A5%E4%BA%86%E5%AE%83%EF%BC%8C%E6%88%91%E6%B0%B8%E8%BF%9C%E4%B8%8D%E4%BC%9A%E7%9C%8B%E5%88%B0%20dhcp%20%E7%8A%B6%E6%80%81%E5%8F%98%E9%87%8F%E8%BD%AC%E5%88%B0%20DHCP_STATE_BOUND%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%88%91%E8%AE%A4%E4%B8%BA%E4%BC%9A%E6%9C%89%E4%B8%80%E4%B8%AA%E5%9B%9E%E8%B0%83%E6%88%96%E7%8A%B6%E6%80%81%E5%8F%98%E9%87%8F%E8%AE%A9%E6%88%91%E7%9F%A5%E9%81%93%E9%93%BE%E6%8E%A5%E4%BD%95%E6%97%B6%E5%90%AF%E5%8A%A8%E6%88%96%E5%85%B3%E9%97%AD%EF%BC%8C%E4%BD%86%E6%88%91%E4%BC%BC%E4%B9%8E%E6%97%A0%E6%B3%95%E5%9C%A8%20MCUXpresso%20SDK%20%E6%88%96%20LwIP%20%E4%B8%AD%E6%89%BE%E5%88%B0%E5%AE%83%E3%80%82%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E5%92%8C%E6%8A%A5%E5%91%8A%E9%93%BE%E6%8E%A5%E7%8A%B6%E6%80%81%EF%BC%9F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%B0%A2%E8%B0%A2%EF%BC%81%3C%2FP%3E%3C%2FLINGO-BODY%3E
无评分
版本历史
最后更新:
‎11-09-2019 08:14 PM
更新人: