Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...


over the socket? Is there a way to have a dynamic buffer? What does one do when one does not know how much information is coming?



over the socket? Is there a way to have a dynamic buffer? What does one do when one does not know ho..

Answer / chaitanya

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.

Is This Answer Correct ?    0 Yes 0 No

Post New Answer

More Unix Socket Programming Interview Questions

Why do I keep getting EINTR from the socket calls?

1 Answers  


How should I choose a port number for my server?

1 Answers  


What are the pros/cons of select(), non-blocking I/O and SIGIO?

0 Answers  


What pieces of information make up a socket?

0 Answers  


system choose one for me on the connect() call? Should I bind() a port number in my client program, or let the?

0 Answers  


How do I get the port number for a given service?

1 Answers  


How do Sockets Work?

1 Answers  


Is tcp or unix socket faster?

0 Answers  


Why does it take so long to detect that the peer died?

0 Answers  


How can I read ICMP errors from connected UDP sockets?

1 Answers  


What exactly does SO_KEEPALIVE do?

1 Answers  


What is socket address with example?

0 Answers  


Categories