2017-05-11 17 views
1

pjsip-2.6IPV4 sip serverを使用してIOSアプリケーションを開発しています。最初のビルドが成功しましたconfigsite.hPJSIP IOSのNat64ネットワークからのIPV4サーバへの登録

#define PJ_HAS_IPV6 1 

に次のコードでPJSIPを構築します。その後、ライブラリを私のプロジェクトに追加しました。IPV4でアプリケーションを実行してください。ネットワークに正常に登録され、音声通話がうまく機能しています。 それから、ネットワークをApple Nat64ネットワークに切り替えました。何もしません。ここに私のコードスニペットがあります。

udpを転送するためには、IPV4に次のコードを使用しました。 IPV6に輸送を作成するための

pjsua_transport_config cfg; 
    pjsua_transport_config_default(&cfg); 
    cfg.port = 5060; 
    // Add UDP transport. 
    status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, &transport_id); 
    if (status != PJ_SUCCESS) error_exit("Error creating transport", status); 

私は追加IPv6ネットワークでアカウントを作成するための...

pjsua_transport_config cfg; 
    pjsua_transport_config_default(&cfg); 
    cfg.port = 5070; 
    // Add UDP transport for ipv6 
    status = pjsua_transport_create(PJSIP_TRANSPORT_UDP6, &cfg, &transport_id_udp6); 
    if (status != PJ_SUCCESS) error_exit("Error creating transport", status); 

を次のコードを使用..

acc_cfg.cred_info[0].username = pj_str((char*)uname); 
    acc_cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD; 
    acc_cfg.cred_info[0].data = pj_str((char *)passwd); 
    acc_cfg.cred_info[0].realm = pj_str("*"); 
    acc_cfg.cred_info[0].scheme=pj_str((char*)"Digest"); 

    char regUri[PJSIP_MAX_URL_SIZE]; 
    sprintf(regUri, "sip:%s", sip_server); 
    acc_cfg.reg_uri = pj_str(regUri); 

    acc_cfg.ipv6_media_use = PJSUA_IPV6_ENABLED; 
    acc_cfg.transport_id = transport_id_udp6; 

誰か場合、それは良いだろう私は問題を指摘することができます。

+0

いくつかのログを提供する必要があります。 PJSIPはログに関する多くの情報を提供し、これは問題の調査に役立ちます。 –

答えて

2

あなたはIPV6ネットワークでのトランスポートの作成に失敗したと思います。

これに利用できる1つのパッチ(リンク:https://github.com/johanlantz/pj-nat64) 以下の手順は、NAT64の問題のパッチを統合する必要があります。

1)上のリンクからpj-nat64ソースをダウンロードしてください。

2)は、ファイルを解凍し、pjprojectに貼り付けるPJ-nat64.cファイルをコピー(パスがある()PJSIPソースを意味しますPJSIP/SRC/pjsua-LIB)

3)コピーPJ-nat64.h (パスはpjsip/include/pjsua-lib)

4)pjsipのメイクファイルにpj-nat64.oを追加する必要があります(ファイルパスはpjsip/include/pjsua-libです)

5)メイクファイルを開き、ダブルス引用符で囲まれた文字列を検索「はPJSUA-LIBのライブラリーを構築するための定義」)の構築pjsua_vid.o

後PJ-nat64.oが追加

6)すべてのアーキテクチャのpjsipソースをコンパイルし、ライブラリファイルとヘッダファイルを取得します。

7)Pjsua_startメソッドが成功を返した後。以下の行を含めてください。定義

の#if(PJ_HAS_IPV6)& & PJ_HAS_IPV6 == 1

pj_nat64_enable_rewrite_module()。

8 #endifの

)はon_reg_state2にコールの()メソッドを以下のコードを追加します。

the_transport = rp->rdata->tp_info.transport; 
    NSLog(@"transport called %s",the_transport->factory->type_name); 

    if (the_transport->factory->type & PJSIP_TRANSPORT_IPV6) 
    { 
     ipv4=FALSE; 
     NSLog(@"enter into the ipv6 loop "); 
     pjsua_var.acc[0].cfg.ipv6_media_use=PJSUA_IPV6_ENABLED ; 
     nat64_options option=NAT64_REWRITE_INCOMING_SDP | NAT64_REWRITE_ROUTE_AND_CONTACT; 
     pj_nat64_set_options(option); 
    } 
+0

githubプロジェクトでは、追加する方法を教えてもらう方法がありません...転送はipv6ネットワークで作成しています。 –

+0

登録SIPログを提供します。だから私は何がうまくいかないかをチェックする –

関連する問題