if i have a packet like so

Code:
struct PACKET
{
    unsigned char command;
    unsigned short length;
    char* message;
};
i know how to send it, but how would i recieve it? since i dont know the size of the packet before i recv() it?