ソケットについて教えて下さい

CAsyncSocketクラスを使用してインスタンスをつくり、
read関数を使って受信したデータを読み込もうとしているのですが

 例えば
CAsyncSocket Sock;
BYTE *buf;
と定義されていて
Sock.read(buf,2000);
とした場合、
 実際に受け取ったデータが1500バイトぐらいだった場合
 1500バイトであるというのを確認するにはどうしたらいいでしょうか

また、read関数でデータを取り出した際に全てのデータを取り出せて
 いなかった場合、通知などは行われるのでしょうか?
 
 詳しい方教えて下さい〜