为什么当我有liblinphone时,我自己的软客户端不能注册到星号SIP服务器?



除了我的客户端,我的Android设备中有Liblinphone Android客户端。

我正在开发一个软客户端,它应该连接到我的星号SIP服务器。

现在,我使用自己的软客户端连接到星号服务器的Number1(例如14109092000)。我将liblibphone客户端与number2(例如(14109092001)连接到同一星号服务器。

关闭Liblinphone客户端或卸载时,我的客户端可以连接到我的星号服务器。

我自己的软客户端使用端口5060,Liblinphone也使用相同的。

这是我的Android活动的代码段,它将注册到SIP服务器。

register.java

 String mobNumber = "14109092000";
        String domain = <some ip address;
        StringBuffer sipAddress = new StringBuffer("sip:").append(mobNumber).append("@").append(domain);
        String identity = sipAddress.toString();
        LinphoneCore lc = null;
        try {
            lc = LinphoneCoreFactory.instance().createLinphoneCore(new SndNumberCoreListenerImpl(), getApplicationContext());
            LinphoneProxyConfig proxy_cfg;
            /*parse identity*/
            LinphoneAddress from = LinphoneCoreFactory.instance().createLinphoneAddress(sipAddress.toString() );
            from.setPort(5060);
            LinphoneAuthInfo info = LinphoneCoreFactory.instance().createAuthInfo(mobNumber, mobNumber,null, domain); /*create authentication structure from identity*/
            lc.addAuthInfo(info); /*add authentication info to LinphoneCore*/
              /*create proxy config*/
            proxy_cfg = lc.createProxyConfig(sipAddress.toString(),domain,null,true);//lc.createProxyConfig();
            // configure proxy entries
            proxy_cfg.setIdentity(identity); /*set identity with user name and domain*/
            String server_addr = from.getDomain(); /*extract domain address from identity*/
            proxy_cfg.setProxy(server_addr); /* we assume domain = proxy server address*/
            proxy_cfg.enableRegister(true); /*activate registration for this proxy config*/
            lc.addProxyConfig(proxy_cfg); /*add proxy config to linphone core*/
            lc.setDefaultProxyConfig(proxy_cfg);/*set to default proxy*/
            lc.addListener(new SndNumberCoreListenerImpl());
            proxy_cfg.done();
            while(switchState) {
                lc.iterate();
                sleep(50);
            }
        } catch (LinphoneCoreException e) {
            e.printStackTrace();
        }

1)为什么会发生这种情况?2)如何防止这种情况?

也许两个客户端的传出端口相同,尝试使用选项" userandomport"或手动设置传出的套接字端口。在linphonepreferences类中,有一个选项用户和托管,您可以在网络设置中在linphone应用中查看它。

if(isRandomPort){
    LinphonePreferences.instance().useRandomPort(true);
}else {
    LinphonePreferences.instance().useRandomPort(false);
    LinphonePreferences.instance().setSipPort(5060);
}

相关内容

  • 没有找到相关文章

最新更新