iptables question

I have two programs, a datagram socket based sender and a datagram socket based receiver. The sender emits a short UDP message to 192.168.0.100:33333 every second. The receiver creates a datagram socket with a default port number (let's say it is 44444), clears the iptables adds the following rule:
iptables -t nat -A OUTPUT -p udp --dport 14450 -j REDIRECT --to-ports 44444.
This works great when the receiver is started before the sender, but NOT if the sender is started before the receiver. It looks to me like the iptables are only consulted once on the initial message from the sender but not for any subsequent messages. Is that correct behaviour or did I miss something?

Does the sender keep sending, not error out ?

Yes, it ignores any error, sleeps for 1 second and sends again.

How did port 14450 get involved? Does the sender have a specific from port? How does port 33333 relate to the iptables?

Sorry about that, the port used by the sender should be the port referenced in the iptables command issued by the receiver (--dport 33333). The problem is not tied to a specific port number. I have not tried any of the priviledged ports (<1024).

I did another experiment with starting the sender first. The receiver now sets up iptables to redirect 33333 and 33334 to it's socket with port 44444. The sender is modified to send 20 messages to 33333 and then every other message to 33334. And guess what, the message sent to 33334 is redirected properly.