Hello Uwe,

I have the call back for accept set as follows.

In the main application, I call echo_accept.

                server_tpcb = tcp_new();
                ui32Err = tcp_bind(server_tpcb, (ip_addr_t
*)&g_ui32IPAddress, NODE_TCP_SERVER_PORT);
                UARTprintf("\n%d",ui32Err);
                server_tpcb = tcp_listen(server_tpcb);
                tcp_accept(server_tpcb, echo_accept);

which is as follows.

static err_t echo_accept(void *arg, struct tcp_pcb *pcb, err_t err)

{
      LWIP_UNUSED_ARG(arg);
      LWIP_UNUSED_ARG(err);

      tcp_setprio(pcb, TCP_PRIO_MIN);
      tcp_arg(pcb, NULL);
      tcp_recv(pcb, echo_recv);
      tcp_err(pcb, echo_err);
      tcp_poll(pcb, NULL, 0);
      return ERR_OK;
}

Do you mean that instead of using pcb I should have another tcp_pcb e,g,
newpcb that is assigned from the pcb in the call back.

struct tcp_pcb *newpcb;

static err_t echo_accept(void *arg, struct tcp_pcb *pcb, err_t err)

{
      LWIP_UNUSED_ARG(arg);
      LWIP_UNUSED_ARG(err);

      newpcb = pcb;

      tcp_setprio(pcb, TCP_PRIO_MIN);
      tcp_arg(pcb, NULL);
      tcp_recv(pcb, echo_recv);
      tcp_err(pcb, echo_err);
      tcp_poll(pcb, NULL, 0);
      return ERR_OK;
}

Regards
Amit

On Thu, Nov 5, 2015 at 11:28 AM, Valery Ushakov <u...@stderr.spb.ru> wrote:

> Amit Ashara <ashara.a...@gmail.com> wrote:
>
> > When a connection is established between the server and the client,
> > I can use the tcp_write on the client side to send data in my
> > application code.  However the same on the server side is not
> > possible.  The pcb that has been used for the server only contains
> > the server's address and server's port but not the client's address
> > and client's port.  In the receive call back on the server side, I
> > can send the data to the client but not outside of the call back.
>
> You are using wrong pcb.  On the server you start with a listening
> pcb.  When your accept callback is called, it's passed a *new* pcb,
> that represents the established connection.  You should use that pcb
> for tcp_write.  Writing from receive callback works because in the
> receive callback the pcb argument is that connection pcb, not the
> original listening pcb.
>
> -uwe
>
>
> _______________________________________________
> lwip-users mailing list
> lwip-users@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to