1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
27
31
32
33
36
37
38
43
44
45
46
47
48
49
50
51
67
68
69
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* ... */
#include "main.h"
#include "lwip/pbuf.h"
#include "lwip/udp.h"
#include "lwip/tcp.h"
#include <string.h>
#include <stdio.h>
6 includes
Includes
#define UDP_SERVER_PORT 7
#define UDP_CLIENT_PORT 7
Private define
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port);
Private function prototypes
/* ... */
void udp_echoserver_init(void)
{
struct udp_pcb *upcb;
err_t err;
upcb = udp_new();
if (upcb)
{
err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);
if(err == ERR_OK)
{
udp_recv(upcb, udp_echoserver_receive_callback, NULL);
}if (err == ERR_OK) { ... }
else
{
udp_remove(upcb);
}else { ... }
}if (upcb) { ... }
}{ ... }
/* ... */
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
udp_connect(upcb, addr, UDP_CLIENT_PORT);
udp_send(upcb, p);
udp_disconnect(upcb);
pbuf_free(p);
}{ ... }