Winsockのエラーコード「WSAENOBUFS(10055)」について – 固定ページ 2 – プログラミング – Home

Winsockのエラーコード「WSAE...
 
通知
すべてクリア

Winsockのエラーコード「WSAENOBUFS(10055)」について

固定ページ 2 / 2

poroporo
 poroporo
(@poroporo)
ゲスト
結合: 15年前
投稿: 16
Topic starter  

>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 になることが考えられます。
>(回線の実効通信速度は常に上下しています。)
結局、こういうことが原因であると、皆さまの回答や、調査した結果、判断しました。

この質問では、「システムのバッファ領域を拡張する方法、キューを拡張する方法がある
のでしょうか?」を、知識として知りたかったのですが、ここらへんで解決とさせていた
だきます。

皆さま、ありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました