UDPサーバにて複数のリクエストからタイムアウト処理を実行するにはどうしたらよいのでしょうか?
UDPにてヘッダ情報を受信後,その値を確認して返答します。
その返答を受信したクライアント側は,サイドデータ転送を実行し,そのパケットを受信したサーバ側はACKを返答します。
これが1クライアントに対しての処理で、これを複数クライアントから受信します。
そのため,クライアントの識別子をサーバ側でリスト構造にして保管しています。
ここでヘッダ情報を受け取り,返答した後に3secたったらサーバサイドに管理されていたそのクライアントのリストデータを削除しする...といったタイムアウト処理をサーバサイドに追加したいのです。
しかしノンブロッキングの状態でこの実装をする方針がわかりません.アラートで各クライアントごとに時間を計りシグナルを飛ばすのかなとも思いましたが果たしてそのようなことができるのでしょうか?
例えばクライアント1 のパケットを受信後 クライアント2のパケットが受信された、二人ともにレスポンスを送った。
その後3 秒応答がない、クライアント1 はタイムアウト。
ってなった時にどのようにクライアントを識別しつつシグナルを飛ばすのかがわからないのです.....
そもそのアラート等のシグナル関数は単一プロセスで複数回呼べるのでしょうか.....
実際に擬似コード等をご指摘いただけると参考になります.言葉だけでは私の理解力が追いつかない可能性がありますので。。。
よろしくお願いいたします。(なお、用いるのは UDP限定でよろしくお願いいたします。)
なおタイムアウトのケースは複数考えられますが,すべてクライアント側のタイムアウトとしてあつかっていいものとします。
回答1件
あなたの回答
tips
プレビュー