pjsua.error,错误=地址已被使用

时间:2018-05-30 12:35:54

标签: python pjsip telephony

我正在尝试使用python中的PJSIP模块进行调用。对于SIP传输的设置,我就像

trans_cfg = pj.TransportConfig()
# port for VoIP communication
trans_cfg.port = 5060
# local system address
trans_cfg.bound_addr = inputs.client_addr
transport = lib.create_transport(pj.TransportType.UDP,trans_cfg)

当我完成通话时,我将传输设置清除为transport = None

我可以通过运行程序来调用用户。但是每次我单独重启PC时,运行python程序时出现错误

File "pjsuatrail_all.py", line 225, in <module>
   main()
File "pjsuatrail_all.py", line 169, in main
   transport = transport_setup()
File "pjsuatrail_all.py", line 54, in transport_setup
   transport = lib.create_transport(pj.TransportType.UDP,trans_cfg)
File "/usr/local/lib/python2.7/dist-packages/pjsua.py", line 2304, in 
   create_transport
   self._err_check("create_transport()", self, err)
File "/usr/local/lib/python2.7/dist-packages/pjsua.py", line 2723, in _err_check
   raise Error(op_name, obj, err_code, err_msg)
pjsua.Error: Object: Lib, operation=create_transport(), error=Address already in use
Exception AttributeError: "'NoneType' object has no attribute 'destroy'" in <bound method Lib.__del__ of <pjsua.Lib instance at 0x7f8a4bbb6170>> ignored

目前我正在这样做

$sudo lsof -t -i:5060
>> 1137
$sudo kill 1137

然后我运行我的代码它工作正常。 通过错误的实例,我可以理解,在某些地方,我没有正确关闭我的传输配置。任何人都可以帮助这方面。 Reference code used

1 个答案:

答案 0 :(得分:1)

根据您提供的输入,可以理解它不是pjsip包装器的问题。运输配置看起来很好。

查看&#39; create_transport&#39;错误,程序无法创建连接,因为5060端口已经被其他程序占用。

为此您正在查杀该进程,并且您可以运行该程序而不会出现任何错误。而且你只在重启时说它,所以在你的系统上重启一些程序就占用了端口。

您可以尝试这样

sudo netstat -nlp|grep 5060

在你的情况下它会给出像

  
    

1137 / ProgramName中

  

转到&#39; ProgramName&#39;在您的启动配置中进行修改,以便它不会拾取端口。