over the socket ? Is there a way to have a dynamic buffer ?

over the socket ? Is there a way to have a dynamic buffer ?

  ming

  This question asked by Niranjan Perera (perera@mindspring.com).

  When the size of the incoming data is unknown, you can either make the
  size of the buffer as big as the largest possible (or likely) buffer,
  or you can re-size the buffer on the fly during your read.  When you
  malloc() a large buffer, most (if not all) varients of unix will only
  allocate address space, but not physical pages of ram.  As more and
  more of the buffer is used, the kernel allocates physical memory.
  This means that malloc'ing a large buffer will not waste resources
  unless that memory is used, and so it is perfectly acceptable to ask
  for a meg of ram when you expect only a few K.

  On the other hand, a more elegant solution that does not depend on the
  inner workings of the kernel is to use realloc() to expand the buffer
  as required in say 4K chunks (since 4K is the size of a page of ram on
  most systems).  I may add something like this to sockhelp.c in the
  example code one day.

  4.  Writing Server Applications (TCP/SOCK_STREAM)



Home
FAQ