PRB: recv() w/MSG_PEEK Always Returns Wrong Buffer Size

ID: Q140263


The information in this article applies to:
  • Microsoft Win32 Software Development Kit (SDK), versions 3.51, 4.0


SYMPTOMS

An Application that uses the Winsock 1.1 call recv(..., MSG_PEEK) repeatedly, will always receive the amount of data as in the first call. This amount only changes when you call recv without MSG_PEEK.


CAUSE

This is the result of a performance optimization within AFD.SYS.


RESOLUTION

recv() with MSG_PEEK should generally be avoided. It is a very inefficient way to retrieve data and definitely not recommended if you care about performance. A much better solution would be to simply receive the data into user buffers and use it directly from there.


STATUS

This behavior is by design.

Keywords : kbnetwork kbtshoot kbAPI kbNTOS351 kbNTOS400 kbSDKPlatform kbWinsock kbGrpNet
Version :
Platform :
Issue type : kbprb


Last Reviewed: March 6, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.