[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [lwip-users] Raw lwIP server write issue
From: |
Valery Ushakov |
Subject: |
Re: [lwip-users] Raw lwIP server write issue |
Date: |
Fri, 6 Nov 2015 23:17:13 +0000 (UTC) |
User-agent: |
tin/2.2.1-20140504 ("Tober an Righ") (UNIX) (NetBSD/6.1.5 (macppc)) |
Amit Ashara <address@hidden> 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 <address@hidden> wrote:
>
>> Amit Ashara <address@hidden> 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