实验用到的API前面几节已经进行了讲解,我们直接创建UDP工程:static void udpecho_thread(void* arg)
{
struct netconn* conn;
struct netbuf* buf;
char buffer[4096];
err_t err;
LWIP_UNUSED_ARG(arg);
conn = netconn_new(NETCONN_UDP); // (1)
netconn_bind(conn, IP_ADDR_ANY, LOCAL_PORT); // (2)
while (1) {
err = netconn_recv(conn, &buf); // (3)
IF (err == ERR_OK) {
if(netbuf_copy(buf, buffer, sizeof(buffer)) != buf->p->tot_len) { // (4)
LWIP_debugF(LWIP_DBG_ON, ("copy faiLED\n"));
}
else {
buffer[buf->p->tot_len] = '\0';
err = netconn_send(conn, buf); // (5)
if(err != ERR_OK) {
LWIP_DEBUGF(LWIP_DBG_ON, ("netconn_send failed: %d\n", (int)err));
}
else {
LWIP_DEBUGF(LWIP_DBG_ON, ("got %s\n", buffer));
}
}
netbuf_delete(buf);
}
}
}
|