Re: [lwip-users] Raw lwIP server write issue
Amit Asharawrote: > 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; Exactly. > On Thu, Nov 5, 2015 at 11:28 AM, Valery Ushakov wrote: > >> Amit Ashara 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 -uwe ___ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users
Re: [lwip-users] Raw lwIP server write issue
Thanks Uwe. On Fri, Nov 6, 2015 at 5:17 PM, Valery Ushakovwrote: > Amit Ashara wrote: > > > 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; > > Exactly. > > > > On Thu, Nov 5, 2015 at 11:28 AM, Valery Ushakov > wrote: > > > >> Amit Ashara 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 > > -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
Re: [lwip-users] Raw lwIP server write issue
Amit Asharawrote: > 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
Re: [lwip-users] Raw lwIP server write issue
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 *)_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 Ushakovwrote: > Amit Ashara 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