[解決済み] 要求されたアドレスが割り当てられない - 考えられる原因は?
2022-03-12 14:24:12
質問
マスターサーバと分散配置されたスレーブサーバで構成されるプログラムがあります。スレーブサーバはサーバに状態を送信し、一定期間特定のスレーブから連絡がない場合、そのスレーブをダウンとしてマークします。これは一貫して起こっています。
ログを調査したところ、スレーブはサーバーに1回だけステータスアップデートを送ることができ、その後、別のアップデートを送ることができず、常にconnect()の呼び出しで失敗していることがわかりました "Cannot assign requested address (99)。
奇妙なことに、スレーブはサーバに他のいくつかの更新を送信することができ、すべての接続は同じポートで起こっています。この失敗の最も一般的な原因は、接続が開かれたままになっていることのようですが、開かれたままになっているものを見つけるのに苦労しています。他に考えられる説明はありますか?
はっきり言って、私の接続方法は以下の通りです。
struct sockaddr *sa; // parameter
size_t sa_size; //parameter
int i = 1;
int stream;
stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);
このコードは、他のサーバーへの接続を取得する関数の中にあり、これら4つの呼び出しのいずれかに失敗すると、その関数は失敗する。
解決方法は?
SO_REUSEADDRが役に立つかも? http://www.unixguide.net/network/socketfaq/4.5.shtml
関連
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。
-
[解決済み] ServerSocket.socketBindを使用して要求されたアドレスを割り当てることができない
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:cの入力の最後に期待される宣言またはステートメント
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】strcmpが機能しない
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み] テスト
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない