Probably because your use of messagebuf is broken in so many ways.
> size_received = recvfrom(socket_fd, messageBuf, sizeof(messageBuf),
messageBuf is NULL (1) and the sizeof is only the size of the pointer (2).
Since UDP is an "all-or-nothing" deal, if you can't fit the whole message into the space provided, then you don't get any of it. So any UDP packets larger than the typical 4-bytes for a pointer are just going to be dropped.
> messageBuf = 'FAILURE';
Please tell me your compiler told you this was bad?
Or do you just ignore all warnings and plough on until it crashes?
> int error = WSAGetLastError();
1. Add this to the call which fails.
2. Print it, so you know more.
Probably some other stuff, but that's enough for you to think about fixing.
And please don't just make messageBuf a char array and attempt to return it.