Hi, 

It seems that when i recieve an UDP message, the UDP input function doesn't 
find the pcb matching with the message recieved. 

I have a client that use POSIX socket on my computer and a server that use LWIP 
on a remote equipment. I already have a raw tcp echo working. 
I've used a simple raw udp echo example on the remote equipment, basically: 
in udp_init(): 
udp_pcb = udp_new(); 
udp_bind(udp_pcb, addr, port); 
udp_recv(udp_pcb, udp_echo_recv()); 
and in udp_echo_recv(): 
udp_sendto(); 

it didn't worked and after that, i found that most of the time, my messages 
weren't matching with a local pcb in udp_input(). 
So i tried to add specific adresse to udp_bind() and i changed udp_sendto with 
udp_connect() and udp_send(). 
I turned ON UDP_DEBUG and it shows me that my pcb is connected and binded to 
what i want. 

So like i said, most of the time udp_input() don't find matching pcb, but the 
message is stored. 
So when udp_input() manage to match with a local pcb, it calls the callback 
with the good pcb but with the first pbuf stored. 
So basically i got: 
send: 1 
rcv:... ///////// i don't recieve anything, udp_input() doesn't find any pcb 
matching 
. ///////// restarting my UDP client. 
send: 2 
rcv:.... 
. 
send: 3 
rcv:.... 
. 
send: 4 
rcv: 1 ///// miracle ! udp_input() find a match, it empty all the buffers 
stored with this pcb starting with 1. (my programme isn't designed to rcv 
several 
////// messages at once but i know for sure that udp_input calls the callback 
as many times as it has pbufs stored for this pcb) 

So my final question is, why doesn't udp_input() find local match all times ? 
Why does it work with the fourth time and not before ? 

Regards, 

Laurent 
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to