2016-12-31 1 views
1

En dehors de mon client, j'ai le client android liblinphone dans mon appareil Android.Pourquoi mon propre client logiciel ne peut-il pas s'inscrire au serveur SIP astérisque lorsque j'ai liblinphone?

Je développe un client logiciel et devrait se connecter à mon serveur SIP astérisque.

Maintenant, j'ai numéro1 (disons 14109092000) connecté au serveur astérisque en utilisant mon propre client logiciel. J'utilise liblibphone client avec number2 (par exemple (14109092001) pour se connecter à un même serveur astérisque.

Lorsque le client de liblinphone est désactivé ou désinstallé, mon client est en mesure de se connecter à mon serveur Asterisk.

Mon doux client utilise le port 5060 et liblinphone utilise également le même.

Voici l'extrait de code de mon activité Android qui enregistre pour siroter serveur.

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) Pourquoi cela se produit-il? 2) Comment puis-je éviter cela?

Répondre

0

Peut-être que le port sortant des deux clients est le même, essayez d'utiliser l'option "useRandomPort" ou configurez le port de socket sortant manuellement. En classe LinphonePreferences il existe une option useRandomPort, vous pouvez le vérifier dans l'application Linphone, dans les paramètres réseau.

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

De telles réponses devraient idéalement être fournies sous forme de commentaires. Vous devriez idéalement fournir une combinaison de code et de sortie pour montrer que vos solutions fonctionnent pour la question. S'il vous plaît envisager de lire via https://stackoverflow.com/help/how-to-answer –

+0

@AmitP, ty, done –

+0

Si vous n'utilisez pas linphonepreferences, définir l'utilisation du port aléatoire comme suit: LinphoneCore.Transports = lc.getSignalingTransportPorts() transports.udp = -1; transports.tcp = -1; transports.tls = -1; lc.setSignalingTransportPorts (transports); –