次の図のような橋を作る必要があります。これは、クライアントからパケットを受信し、それを別のサーバーに転送する単なるUDPサーバーです。シナリオは図によってよく理解されます。
+--------+sendto() recvfrom()+-----------+
| client |------------------->| | +-------------+
| | 1 | bridge |sendto() recvfrom() | |
| | | |------------------------>| duty |
| | | | 2 | server |
| | | |recvfrom() sendto() | processing |
| | | |<------------------------| |
| |recvfrom() sendto()| | 3 | |
| |<-------------------| | +-------------+
+--------+ 4 +-----------+
ここでは、データを送受信する機能がデバイスの側面に沿って書き込まれています。通信プロセスは、矢印記号の下の番号1、2、3、および4で識別されます。上から下へとタイムラインを表現できるように図を描いてみました。
今、要点に来てください。管理するクライアントが1つしかない場合、それを行うのは非常に簡単な作業です。しかし、クライアント数が多くなる可能性があると仮定しましょう。クライアントがダイヤラを使用してインターネットに接続されている電話であり、サーバーがAsterisk/Freeswitchなどを実行しているSIPサーバーであるとします。このようなシナリオでは、多くのクライアントが存在する可能性があります。通信を効率化するために、ブリッジサーバーをプロキシサーバー(kamailioとrtpproxyを実行)として使用したくありません。
アスタリスクまたはSIPサーバーは、私が知っているudpセッションを管理できます。しかし、どうすれば橋を架けることができますか。udpはセッションを維持しないので、どうすれば4番目のステップを完了することができますか。クライアントのデューティサーバーの応答を特定するにはどうすればよいですか?セッションを処理するために、どのタイプのソフトウェア(もちろん効率のために軽量であり、私自身もそれを作成する必要があります)を作成する必要があります。誰かがudpを介してセッション管理のアイデアを私に与えることができれば、それは私にとって非常に役に立ちます。たくさん検索しましたが、適切な答えが見つかりませんでした。
前もって感謝します。