Please use <code> tags to format your code (and any data), see How do I post a question effectively?
When I run the program and send the packet it just sits in the receiv queue.
I can't reproduce this with the code you showed. When I run your code and send it a UDP packet via echo "Hello" | socat - UDP-DATAGRAM:127.0.0.1:4001, your code prints Received from 127.0.0.1: Hello as I'd expect. Could you show us how to reproduce the issue you're having with a Short, Self-Contained, Correct Example? Perhaps it's in the client, which you haven't shown.