You do not need to know the buffer size before recieving the data, although it would help. C++ solves many problems like this by providing [classes like] the vector template class. What I am trying to say is that you can declare a vector to recieve the data, and just keep calling push_back(...) to stuff the bytes into the buffer. If you have a good idea of how many bytes of data you expect to recieve, then set the initial size to that many bytes (as an added safety measure you might double the number, but why waste memory). The reason you want to set a minimum (or maximum) for expected bytes of data, is that you want to avoid forcing the code to reallocate a new memory block that is large enough to hold all the data. You can do the same thing in C, but C does not provide nice little pieces of code to do it for you. INTP Every thing is relative...