[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない
2022-02-19 02:49:46
質問
cソケットを使用して、信頼性の高いUDPプロトコルを実装しています。 以下のコードを使用して、確認応答を待っているソケットにタイムアウトを設定しています。 なぜ errno 11, resource temporarily unavailable が発生するのかよくわかりません。
//set timer for recv_socket
struct timeval tv;
tv.tv_usec = TIMEOUT_MS;
if(setsockopt(rcv_sock, SOL_SOCKET, SO_RCVTIMEO,&tv,sizeof(tv)) < 0){
printf("Error setting the socket timeout.\n");
}
int recv_msg_len;
if(recv_msg_len = recvfrom(rcv_sock, ackBuffer,sizeof(ackBuffer), 0,
(struct sockaddr *) &servAddr2, &fromSize) < 0){
//timeout reached
printf("Error Reporting: %d : %s\n", errno, strerror(errno));
num_timeouts++;
}
コメントで紹介されていたselectメソッドも試してみました。 ループの中に以下のようなコードを入れていますが、recvfromがタイムアウトすることはありません。
fd_set set;
FD_ZERO(&set); /* empties the set */
FD_CLR(rcv_sock,&set); /* removes FD from the set */
FD_SET(rcv_sock,&set); /* adds FD to the set */
if(select(rcv_sock + 1, &set, NULL, NULL, &tv) < 0){
printf("\nError Reporting: %d : %s\n\n", errno, strerror(errno));
return -1;
}
if(!FD_ISSET(rcv_sock,&set)){ /* true if FD is in the set */
printf("socket is not set properly.\n");
}
解決するには?
呼び出し時
recvfrom()
を使用してタイムアウトが設定されている場合、ブロッキングソケット上で
setsockopt()
というエラーが発生するのは正常です。
EAGAIN (11)
recvfrom()
man recvfrom
recvfrom ()
エラー
... .
EAGAINまたはEWOULDBLOCK ソケットがノンブロッキングであり、受信動作がブロックされる。 または受信タイムアウトが設定されていて データを受信する前にタイムアウトが発生した . ...
これを回避するために を呼び出すだけです。
もう一度 ... ;-)
関連
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】malloc():メモリ破壊
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み] struct has no member named
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み] エラー: `itoa` はこのスコープで宣言されていません。