При установлении TCP соединения вызывается функция:
Код
err_t accept(void *arg, struct tcp_pcb *newpcb, err_t err)
{
tcp_err(newpcb, err_callback);
tcp_arg(newpcb, NULL);
tcp_recv(newpcb, recv_callback);
tcp_sent(newpcb, send_callback);
tcp_poll(newpcb, poll_callback, 1);
return ERR_OK;
}
{
tcp_err(newpcb, err_callback);
tcp_arg(newpcb, NULL);
tcp_recv(newpcb, recv_callback);
tcp_sent(newpcb, send_callback);
tcp_poll(newpcb, poll_callback, 1);
return ERR_OK;
}
Далее при получении пакета вызываеся:
Код
err_t recv_callback(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{
char* rq;
u32_t* newarg;
if (p != NULL)
{
if ( p->len ) {
newarg = (u32_t*) mem_malloc(sizeof(u32_t));
*newarg = 5;
if (tcp_write(tpcb, &MyBuf[0], 5, 0) != ERR_OK)
{
mem_free(newarg);
tcp_close(tpcb);
}
else
{
tcp_arg(tpcb, newarg);
}
}
tcp_recved(tpcb, p->len);
pbuf_free(p);
}
return ERR_OK;
Пробовал sdf}
{
char* rq;
u32_t* newarg;
if (p != NULL)
{
if ( p->len ) {
newarg = (u32_t*) mem_malloc(sizeof(u32_t));
*newarg = 5;
if (tcp_write(tpcb, &MyBuf[0], 5, 0) != ERR_OK)
{
mem_free(newarg);
tcp_close(tpcb);
}
else
{
tcp_arg(tpcb, newarg);
}
}
tcp_recved(tpcb, p->len);
pbuf_free(p);
}
return ERR_OK;
Пробовал sdf}
tcp_write возвращает ERR_OK, но на компе я не вижу ничего. Пинги идут. Опции lwipopts.h стандартные кроме того что я сам выставил
Код
#define SYS_LIGHTWEIGHT_PROT 0
#define NO_SYS 1
#define NO_SYS 1