0

sofia ライブラリを使用し、sofia-sip クライアントの例に基づいて、C で小さな voip クライアント アプリケーションを開発しました。Evertyhing は問題なく動作しますが、アプリケーションの実行中に IP アドレスが変更されると、sofia 自体が更新されません。私は自分自身を説明します:

voip アプリケーション (Linux で実行) を実行すると、sofia は現在の IP アドレスを取得し、アプリケーションはそのアドレスへのすべての着信呼び出しを受け入れます。

アプリケーションが実行されているデバイスの IP が変更された場合 (Linux のネットワーク構成の更新) 、新しい ip で動作するように sofia を更新できないため、着信コールが受信されません。

ssc_set_public_address を試してみました。これは、ssc_address を更新し、nua_set_params を使用して nua に新しい値を設定します。

/**
* Sets the public address used for invites, messages,
* registrations, etc method.
*/
void ssc_set_public_address(ssc_t *ssc, const char *address)
{
  if (address) {
    su_free(ssc->ssc_home, ssc->ssc_address);
    ssc->ssc_address = su_strdup(ssc->ssc_home, address);

    nua_set_params(ssc->ssc_nua,
    SIPTAG_FROM_STR(ssc->ssc_address),
    TAG_NULL());
  }
}

それを行った後、内部IPアドレスが変更されたように見えます(get_paramsを使用して読み取ると、新しいものを取得します)が、着信コールが受信されないため、何かが失われます.

新しい IPを使用するには、アプリケーション全体を再起動する必要があります

アプリケーションを再起動せずにソフィア IP を実際に更新する方法を知っている人はいますか?

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

4

0 に答える 0