2

我正在 Android 上开发基于 pjsip 的 SIP 客户端(我现在使用 csipsimple 代码作为参考)。

当我尝试注册帐户时,我收到以下错误:

无法为注册生成合适的联系人标头:不支持的传输 (PJSIP_EUNSUPTRANSPORT)

我的代码和这里的代码几乎一样 sipServer 字符串是注册商的 ip 地址“192.168....”

我还尝试不指定以下代码中的传输方法:

        int[] accId = new int[1];

        accId[0] = 1;

        pjsua_acc_config cfg = new pjsua_acc_config();
        pjsua.acc_config_default(cfg);
        csipsimple_acc_config css_cfg = new csipsimple_acc_config();
        pjsua.csipsimple_acc_config_default(css_cfg);
        cfg.setPriority(10);
        cfg.setId(pjsua.pj_str_copy("sip:" + sipUser + "@" + sipServer));
        cfg.setReg_uri(pjsua.pj_str_copy("sip:" + sipServer)); 
        cfg.setReg_timeout(60);
        cfg.setCred_count(1);

        cfg.setPublish_enabled(0);
        cfg.setReg_delay_before_refresh(-1);

        cfg.setUse_timer(pjsua_sip_timer_use.PJSUA_SIP_TIMER_OPTIONAL);
        pjsua.csipsimple_set_acc_user_data(cfg, css_cfg);
        status = pjsua.acc_add(cfg, pjsuaConstants.PJ_FALSE, accId);

错误是:

E/libpjsip(20934): pjsua_acc.c ..无法为注册生成合适的联系人标头:不支持的传输 (PJSIP_EUNSUPTRANSPORT) [status=171060]

当然,在此之后,wireshark 上没有任何痕迹:lib 在发送任何数据之前就放弃了。

谢谢

4

1 回答 1

0

我不得不添加以下代码:

    int[] tId = new int[1];
    int status;
    pjsua.transport_config_default(cfgTrasport);
    cfgTrasport.setPort(5060);
    status = pjsua.transport_create(pjsip_transport_type_e.PJSIP_TRANSPORT_UDP, cfgTrasport, tId);
    if (status != pjsuaConstants.PJ_SUCCESS) {
        Log.e("pjsua.transport_create returned status="+status);
    }
于 2013-05-13T08:47:35.817 回答