ttp://msdn.microsoft.com/ja-jp/library/bew39x2a%28v=vs.80%29.aspx
ここの
// Get the rest of the data.
client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,
new AsyncCallback(ReceiveCallback), state);

これがわからないんですが、
StateObject内のBufferSizeを溢れた分はこのstateを引き継いで、

state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead));

これで継ぎ足されていくという認識で良いんですか?