>ITOさん
そういう意味でしたか。XPについてはっきり記述が見つかりませんでしたが、NT4.0でも
根本的に直っているという記述も見つかっていないため、Windowsは全部この状態になる
ことは仕方がないことかもしれませんね。
>GARAさん
>1.send() がノンブロックなら、ブロックに変えてみる。
現状、ブロッキングしています。
>2.send() を実行後、少しSleep() して次の send() を実行する。
> Sleep() の時間はいろいろ変えて(1~10秒?)試してみる。
これも、200ミリ秒ぐらいですが、Sleepを入れています。
>3.send() がエラーを返したら、同じデータの send() を再試行する。
> 試行回数の管理が必要。また、再試行する前に少し Sleep() が必要。
これは、10035(WSAEWOULDBLOCK)であれば再試行しています。
その他のエラーの場合は、MSDNの通信系のエラーコードのヘルプを読んで再試行しても無
駄だと判断しました。
>4.recv() 側は応答を返すようにして、send() 側は応答を受信してから
> 次の send() を実行する。send() 単位に送信長がわかるヘッダを
> 設け、recv() 側が応答を返すタイミングを判断できるようにする。
これは、現状の通信規定に違反してしまうため、できません。
>回線状態(輻湊)が悪い時は下位レベルのソケット通信サービスの送信が
>完了しないうちに上位アプリケーションから send() でソケット通信
>サービスに送信要求を発行され、下位の送信キューが一杯になり
>10055 になることが考えられます。
>(回線の実効通信速度は常に上下しています。)
結局、こういうことが原因であると、皆さまの回答や、調査した結果、判断しました。
この質問では、「システムのバッファ領域を拡張する方法、キューを拡張する方法がある
のでしょうか?」を、知識として知りたかったのですが、ここらへんで解決とさせていた
だきます。
皆さま、ありがとうございました。