würd' auch sagen, der server muss immer die verbindung aufbauen.
ausnahmen gibt's nur, wenn der Router eine NAT nach dem "full cone" prinzip hat. (Full Cone: A full cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Furthermore, any external host can send a packet to the internal host, by sending a packet to the mapped external address.) aber auch da müsste der client erraten, welcher port von der NAT vergeben wurde.
Für UDP gibt es Lösungen aus der VoIP Telefonie (STUN) ->
http://sourceforge.net/projects/stun/
vielleicht hilft dir das ein wenig
