Hi,


Dirk, if the application is creating a different port on every reply you cannot 
rely on that.

You must have control over the data



Surya,

Yes you can listen on a single UDP but you need to get some kind of data that 
will let you know who

Responded.



If you have a processing issue, meaning you send 5 messages and applications 
send the replies

more or less at the same time, you may need to first to add the received data 
to some kind of

temporary buffering mechanism and in the background process one message at a 
time.



The above buffering mechanism ensures that you do not loos any data…



This is how I would have done it.





BR,

Noam.


From: lwip-users [mailto:[email protected]] On 
Behalf Of Dirk Ziegelmeier
Sent: Wednesday, December 07, 2016 12:44 PM
To: Mailing list for lwIP users
Subject: Re: [lwip-users] UDP bind error due to address and port reuse

Use one UDP PCB, bind it to IPADDR_ANY and port x.
Use udp_sendto() to send to any IP/port combination.
http://www.nongnu.org/lwip/2_0_0/group__udp__raw.html

You get the src address/port of any request in your receive callback:

void my_udp_recv_fn (void *arg, struct 
udp_pcb<http://www.nongnu.org/lwip/2_0_0/structudp__pcb.html> *pcb, struct 
pbuf<http://www.nongnu.org/lwip/2_0_0/structpbuf.html> *p, const 
ip_addr_t<http://www.nongnu.org/lwip/2_0_0/group__ipaddr.html#ga44f9ada14c65d17aecf802d82eb273c5>
 *addr, u16_t port)
{
   [create new pbuf with response]
   udp_sendto(pcb, response_pbuf, addr, port);
​}
​Dirk
​

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

Reply via email to