お世話になってます。
非同期ソケットについて詳しい人、質問させてください。

サーバとクライアントでソケット通信をしようと考えています。
通常、非同期通信をするには「非同期ソケット」を使うのが一般的らしいので、
microsoftの非同期サーバー ソケットの例を参考に実装しています。
サーバ側はBeginAcceptでクライアントからの接続を待ち、
接続要求がきたらBeginReceiveでデータ受信を待つ、という形です。

しかしこれだと、クライアントから接続要求だけ実行されて
サーバは受信待ちをしているのにデータがぜんぜん送られてこない場合
処理を終わらせられないですよね。
無数に接続要求ばかり来た場合(dos攻撃?)、やばそうな感じです。

こういう場合、どう対処するのがスマートなんでしょうか?
接続ごとに時間測ってタイムアウトをとるとかでしょうか?