>>533
Vista以降はcloseするとFINを送る前に0パケットを送信する

>>532
というわけでclose以外で0バイトの受信が来る事はない。
TCPはデータの到達は保障してくれるけど区切りまでは保障してくれない。
だからTCP通信で必須になるのがデータサイズを相手に通知する作業なの

HTTPプロトコルだと、まず\r\n\r\nでヘッダの終わりを通知して
ヘッダの中のContent-Lengthで後続するデータサイズを明記するという構造でデータサイズを渡してる。

同じようにデータのサイズをあらかじめ通知する方法を自分で考えたプロトコルにも組み込まないといけない。
そうすることで何バイト受信すればいいかがわかるでしょ。