There is a netcat from netcat-openbsd package and another from a netcat-traditional package. That explains the -p differences, but not your question.
I think it has to do with the terminal or readline buffering rather than netcat. I may need to press ctrl-c after exiting from an ssh session.
I can verify that I see the same behaviour as you.
P.S. The listening terminal returns on killing nc. A sending nc doesn't return after
nc -u host 12345 < file
Last edited by jschiwal; 01-06-2013 at 04:55 AM.