1#include "netio.h" 2 3#include "lwip/opt.h" 4#include "lwip/tcp.h" 5 6/* See http://www.nwlab.net/art/netio/netio.html to get the netio tool */ 7 8#if LWIP_TCP 9static err_t 10netio_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) 11{ 12 LWIP_UNUSED_ARG(arg); 13 14 if (err == ERR_OK && p != NULL) { 15 tcp_recved(pcb, p->tot_len); 16 pbuf_free(p); 17 } else { 18 pbuf_free(p); 19 } 20 21 if (err == ERR_OK && p == NULL) { 22 tcp_arg(pcb, NULL); 23 tcp_sent(pcb, NULL); 24 tcp_recv(pcb, NULL); 25 tcp_close(pcb); 26 } 27 28 return ERR_OK; 29} 30 31static err_t 32netio_accept(void *arg, struct tcp_pcb *pcb, err_t err) 33{ 34 LWIP_UNUSED_ARG(arg); 35 LWIP_UNUSED_ARG(err); 36 37 if (pcb != NULL) { 38 tcp_arg(pcb, NULL); 39 tcp_sent(pcb, NULL); 40 tcp_recv(pcb, netio_recv); 41 } 42 return ERR_OK; 43} 44 45void 46netio_init(void) 47{ 48 struct tcp_pcb *pcb; 49 50 pcb = tcp_new_ip_type(IPADDR_TYPE_ANY); 51 tcp_bind(pcb, IP_ANY_TYPE, 18767); 52 pcb = tcp_listen(pcb); 53 tcp_accept(pcb, netio_accept); 54} 55#endif /* LWIP_TCP */ 56