LINUX.ORG.RU
решено ФорумAdmin

Создание среды для приложения и взаимодействие этого приложения с Java

 , , , ,


0

1

Имеется: Ubuntu 10.04 x64 Desktop, Skype v.2..., SUN Java, SipToSis (тыц).

Что нужно: заставить корректно работать SipToSis со Skype.

Проблемы:

1) SipToSis требует, чтобы в Ubuntu была установлена только SUN-Java (а не какой-то другой JRE) и Skype был настроен исключительно на Dummy-драйвер (модифицированный). Пересобрать Dummy получилось, корректно и модуль загружался. С Java разобрался так:

add-apt-repository ppa:sun-java-community-team/sun-java6
apt-get update
apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
update-java-alternatives -v -s java-6-sun
И оно работало почти как надо.

2) Появилась звуковая карта и поднял голову PulseAudioServer... Думал, это не должно повлиять на систему, но нет - Skype вгрызся в PulseAudio и отказывался видеть Dummy. Запуск Skype`а от пользователя root позволяет выбрать в списке УСТРОЙСТВА (о PulseAudio там вообще ни слова - только устройства звуковой карты и Dummy). Попробовал сделать для Skype`а юзера, но ему был виден только PulseAudioServer. Плюнул, вернулся к root`у и выставл драйвер Dummy для Skype`а. Решил запустить SipToSis и вуа-ля! Java начала заваливать меня из консоли адским и невменяемым спамом, при этом укладывая процессор в 120-130%. Выглядит это так:

Launching SipToSis
2012-08-30 11:09:48,141 STUN: Error - Unknown Host: stun.xten.net
2012-08-30 11:09:48,141 Starting SipToSis v20111012
2012-08-30 11:09:48,156 Skype4Java Version 1.3.0.1
2012-08-30 11:09:48,157 os=Linux ver=3.0.0-25-generic arch=amd64 (4 core)
2012-08-30 11:09:48,157 javaVer=1.6.0_21 - Sun Microsystems Inc. (64 bit)
2012-08-30 11:09:48,161 error:
java.net.BindException: Cannot assign requested address
	at java.net.PlainDatagramSocketImpl.bind0(Native Method)
	at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82)
	at java.net.DatagramSocket.bind(DatagramSocket.java:372)
	at java.net.DatagramSocket.<init>(DatagramSocket.java:211)
	at org.zoolu.sip.provider.StunClient.getPubIp(StunClient.java:138)
	at org.zoolu.sip.provider.StunClient.run(StunClient.java:86)
2012-08-30 11:09:48,162 error:
java.net.BindException: Cannot assign requested address
	at java.net.PlainDatagramSocketImpl.bind0(Native Method)
	at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82)
	at java.net.DatagramSocket.bind(DatagramSocket.java:372)
	at java.net.DatagramSocket.<init>(DatagramSocket.java:211)
	at org.zoolu.sip.provider.StunClient.getPubIp(StunClient.java:138)
	at org.zoolu.sip.provider.StunClient.run(StunClient.java:86)
2012-08-30 11:09:48,162 error:
...
2012-08-30 11:09:48,163 error:
...
2012-08-30 11:09:48,163 error:
...
2012-08-30 11:09:48,164 error:
...
2012-08-30 11:09:48,164 error:
...
2012-08-30 11:09:48,165 error:
...
И вот как это резрешить? Я вообще не поклонник явы - она у меня всегда и всюду глючит. Вроде бы всё сделал по мануалам, и оно почти работало... А теперь вообще умерло.

По факту надо: запустить Skype, указать ему в качестве звукового устройства Dummy. Сам Dummy нужно предварительно пропатчить в исходнике (это легко сделать и уже готово). После всего этого - поднять систему Java-приложений SipToSis (почему-то ОЧЕНЬ упётую в SUN`овскую машину), которая будет взаимодействовать со Skype`ом по его API с одной стороны и по sip-протоколу с АТС с другой.

★★

2012-08-30 11:09:48,141 STUN: Error - Unknown Host: stun.xten.net

Адрес не тот указан. Ищи где он указывается и пропиши правильно.

ma1uta ★★★
()
Ответ на: комментарий от ma1uta

Адрес не тот указан.

Если Вы об адресе stun, то я его не менял, как и все остальные. У всех, кто не использует STUN и не трогает этот параметр настройки есть в логах строка с «Unknown Host: stun.xten.net». Это не мешает работе SipToSis. Проверено.

Или Вы имели в виду другой адрес?

zzdnx ★★
() автор топика
Ответ на: Адрес не тот указан. от zzdnx

Судя по записи

java.net.BindException: Cannot assign requested address

он не может добраться до адреса (грубо говоря не пингуется). Если в этом не виноват stun.xten.net, тогда другой адрес неправильный.

Попробуй проверить еще раз настройки и все адреса на корректность.

ma1uta ★★★
()
Ответ на: комментарий от ma1uta

Временами жалею, что я не Jav`ист...

Благодарю за помощь. Так оно и оказалось - мне DHCP сменил IP-адрес, хотя должен был его держать ещё с неделю. Так же в конфиге прописал «127.0.0.1» вместо прямых адресов указывавших Яве на Скайп-клиента.

Есть ещё пара вопросов, на которые хотелось бы получить ответ, если Вас не затруднит. Вот код из консоли (меня очень интересуют два пункта этого вывода):

Launching SipToSis
2012-09-04 10:43:52,058 STUN: Error - Unknown Host: stun.xten.net
2012-09-04 10:43:52,065 Starting SipToSis v20111012
2012-09-04 10:43:52,068 Skype4Java Version 1.3.0.1
2012-09-04 10:43:52,068 os=Linux ver=3.0.0-25-generic arch=amd64 (4 core)
2012-09-04 10:43:52,068 javaVer=1.6.0_21 - Sun Microsystems Inc. (64 bit)
2012-09-04 10:43:52,108 Available Codecs: PCMU(0),PCMA(8),iLBC(98),L16/16k(102)
2012-09-04 10:43:52,108 DTMF rfc2833(101)
2012-09-04 10:43:52,108 initSkype - If stuck, check Skype online & API auth
2012-09-04 10:43:52,649 SkypeVer:2.2.0.35
2012-09-04 10:43:52,724 Attached SkypeUserId:****************************
2012-09-04 10:43:52,733 Config - skypeClientSupportsMultiCalls:false  concurrentCallLimit:2
2012-09-04 10:43:52,733 SipToSis contact_url=sip:Skype@127.0.0.1:5070
2012-09-04 10:43:52,733 Ext. Srvr (from_url)=sip:Skype@***.***.***.***:5060
2012-09-04 10:43:52,733 via_addr=127.0.0.1  realm=asterisk
2012-09-04 10:43:52,733 RTP Ports: 63200-63202  Local Skype Ports: 26129-26132
2012-09-04 10:43:52,733 jitterLevel=-1
2012-09-04 10:43:52,788 Registrar Server Domains=
2012-09-04 10:43:52,789 MaxCallTime: not limited MaxPSTNCallTime: not limited
2012-09-04 10:43:52,789 MaxDailyPSTNUniqueNumberCount: 48 MaxDailyPSTNMinutes: 350
2012-09-04 10:43:52,793 Loading Skype PSTN Call History
2012-09-04 10:43:52,794 error
java.net.BindException: Address already in use
	at java.net.PlainSocketImpl.socketBind(Native Method)
	at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
	at java.net.ServerSocket.bind(ServerSocket.java:319)
	at java.net.ServerSocket.<init>(ServerSocket.java:185)
	at java.net.ServerSocket.<init>(ServerSocket.java:97)
	at local.ua.SkypeAudioSenderServer.run(SkypeAudioSenderServer.java:163)
2012-09-04 10:43:52,799 WAITING FOR INCOMING CALL
2012-09-04 10:43:52,799 WAITING FOR INCOMING CALL
2012-09-04 10:43:52,831 89 possible calls to import.
2012-09-04 10:43:52,892 0 PSTN calls imported
2012-09-04 10:43:52,903 PSTN counters reset at: 04:00:00 MSD
2012-09-04 10:43:52,904 Qualified PSTN calls today: 0 Time: 0 minutes
2012-09-04 10:43:53,043 AcctBalance: 0,00 EUR
2012-09-04 10:43:53,043 REGISTRATION
2012-09-04 10:44:02,579 STUN: No Response.
2012-09-04 10:44:25,076 Registration failure: Timeout
2012-09-04 10:44:25,082 Failed Registration retrying in 15 seconds.
2012-09-04 10:45:12,084 Registration failure: Timeout
2012-09-04 10:45:12,087 Failed Registration retrying in 15 seconds.
1) Код вот этой ошибки:
2012-09-04 10:43:52,794 error
java.net.BindException: Address already in use
	at java.net.PlainSocketImpl.socketBind(Native Method)
	at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
	at java.net.ServerSocket.bind(ServerSocket.java:319)
	at java.net.ServerSocket.<init>(ServerSocket.java:185)
	at java.net.ServerSocket.<init>(ServerSocket.java:97)
	at local.ua.SkypeAudioSenderServer.run(SkypeAudioSenderServer.java:163)
2012-09-04 10:43:52,799 WAITING FOR INCOMING CALL
Что это такое? Може-ли из-за этого у меня пропадать часть трафика или иным последствиям? Мне сложно искать чёрную кошку в чёрной комнате (так как я не понимаю всех этих записаей явы).

2) Вот такая бяка с перерегистрацией:

2012-09-04 10:44:25,076 Registration failure: Timeout
2012-09-04 10:44:25,082 Failed Registration retrying in 15 seconds.
2012-09-04 10:45:12,084 Registration failure: Timeout
2012-09-04 10:45:12,087 Failed Registration retrying in 15 seconds.
По две строки каждые «15» секунд (или сколько я там отведу для «таймаута» в конфиге). Это нормальная реакция на истечение таймаута? Или это неудачные попытки перерегистрации (по причине того, что аккаунт уже зарегистрирован)?

Благодарю за оказанную помощь!

zzdnx ★★
() автор топика
Ответ на: Временами жалею, что я не Jav`ист... от zzdnx

О 127.0.0.1 и регистрации в астериске...

Оказывается, этот адрес приемлем только при условии что вся конструкция (Skype + SipToSis + Asterisk) вертится на одном хосте. Так как настраиваю Skype + SipToSis вне Asterisk`а - пришлось всё-таки вписать свой локальный IP-адрес как есть, иначе PBX отправляла вызовы на петлю 127.0.0.1, а не на мой хост. Кто настраивает - учтите этот пункт! После появления «REGISTRATION» должно последовать «Registration success», после чего «Registration failure: Timeout ; Failed Registration retrying in 15 seconds.» должны прекратиться (у меня сменились на «401 Registration Authentication ; Registration success: 200 OK»).

zzdnx ★★
() автор топика
Ответ на: Временами жалею, что я не Jav`ист... от zzdnx

Первая ошибка говорит о том, что к адресу/порту ещё кто-то прицепился, например, второй экземпляр. Такое может быть, если два раза запустили приложение и они не могут поделить адрес/порт. Проверь через

netstat -nap | grep <номер порта>
кто слушает этот порт.

ma1uta ★★★
()
Ответ на: комментарий от ma1uta

кто слушает этот порт?

Кто-то, видимо, что-то слушает... Первое: 5060 (порт астериска) - его слушал софтфон twinkle, после чего был тут же отключен, но это не изменило ситуацию:

Launching SipToSis
2012-09-05 10:21:57,953 Starting SipToSis v20111012
2012-09-05 10:21:57,956 Skype4Java Version 1.3.0.1
2012-09-05 10:21:57,956 os=Linux ver=3.0.0-25-generic arch=amd64 (4 core)
2012-09-05 10:21:57,956 javaVer=1.6.0_21 - Sun Microsystems Inc. (64 bit)
2012-09-05 10:21:57,997 Available Codecs: PCMU(0),PCMA(8),iLBC(98),L16/16k(102)
2012-09-05 10:21:57,997 DTMF rfc2833(101)
2012-09-05 10:21:57,998 initSkype - If stuck, check Skype online & API auth
2012-09-05 10:21:58,045 Skype Status: NOT_RUNNING - retrying every 5 seconds
 2012-09-05 10:22:03,697 SkypeVer:2.2.0.35
2012-09-05 10:22:03,773 Attached SkypeUserId:*******************************
2012-09-05 10:22:03,827 Config - skypeClientSupportsMultiCalls:false  concurrentCallLimit:2
2012-09-05 10:22:03,827 SipToSis contact_url=sip:Skype@[local IP]:5070
2012-09-05 10:22:03,827 Ext. Srvr (from_url)=sip:Skype@[Asterisk IP]:5060
2012-09-05 10:22:03,827 via_addr=[local IP]  realm=asterisk
2012-09-05 10:22:03,827 RTP Ports: 63200-63202  Local Skype Ports: 26129-26132
2012-09-05 10:22:03,828 jitterLevel=-1
2012-09-05 10:22:04,058 WAITING FOR INCOMING CALL
2012-09-05 10:22:04,058 WAITING FOR INCOMING CALL
2012-09-05 10:22:04,051 Registrar Server Domains=
2012-09-05 10:22:04,082 error
java.net.BindException: Address already in use
	at java.net.PlainSocketImpl.socketBind(Native Method)
	at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
	at java.net.ServerSocket.bind(ServerSocket.java:319)
	at java.net.ServerSocket.<init>(ServerSocket.java:185)
	at java.net.ServerSocket.<init>(ServerSocket.java:97)
	at local.ua.SkypeAudioSenderServer.run(SkypeAudioSenderServer.java:163)
2012-09-05 10:22:04,083 MaxCallTime: not limited MaxPSTNCallTime: not limited
2012-09-05 10:22:04,088 MaxDailyPSTNUniqueNumberCount: 48 MaxDailyPSTNMinutes: 350
2012-09-05 10:22:04,089 Loading Skype PSTN Call History
2012-09-05 10:22:04,149 134 possible calls to import.
2012-09-05 10:22:10,988 0 PSTN calls imported
2012-09-05 10:22:11,078 PSTN counters reset at: 04:00:00 MSD
2012-09-05 10:22:11,079 Qualified PSTN calls today: 0 Time: 0 minutes
2012-09-05 10:22:11,228 AcctBalance: 0,00 EUR
2012-09-05 10:22:11,228 REGISTRATION
2012-09-05 10:22:11,262 401 Registration Authentication
2012-09-05 10:22:11,281 Registration success: 200 OK
И того: 5060, 5070, 63200-63202, 26129-26132:
$ sudo netstat -nap | grep 5070
$ sudo netstat -nap | grep 5060
$ sudo netstat -nap | grep 63200
$ sudo netstat -nap | grep 63201
$ sudo netstat -nap | grep 63202
$ sudo netstat -nap | grep 26129
$ sudo netstat -nap | grep 26130
$ sudo netstat -nap | grep 26131
$ sudo netstat -nap | grep 26132
И больлше никаких портов в конфигах нету. Единственное, что осалось - несогласованность портов RTP на сервере и ява-машине (63200-63202 на яве и 10000-20000 на астериске ; Defaults are rtpstart=5000 and rtpend=31000")

zzdnx ★★
() автор топика
Ответ на: комментарий от ma1uta

Слушаем порты:

sudo netstat -nap | egrep "5060|5070|63200|63201|63202|26129|26130|26131|26132"

Пусто при выключенном SipToSis & Skype. При включёных это выглядит так:

tcp        0      0 0.0.0.0:26129           0.0.0.0:*               LISTEN      3945/skype
tcp        0      0 0.0.0.0:26130           0.0.0.0:*               LISTEN      4036/java
tcp        0      0 0.0.0.0:26131           0.0.0.0:*               LISTEN      4036/java
tcp        0      0 0.0.0.0:26132           0.0.0.0:*               LISTEN      4036/java
udp        0      0 0.0.0.0:5070            0.0.0.0:*                           4036/java
udp        0      0 0.0.0.0:26129           0.0.0.0:*                           3945/skype
udp        0      0 0.0.0.0:63200           0.0.0.0:*                           4036/java
udp        0      0 0.0.0.0:63202           0.0.0.0:*                           4036/java

zzdnx ★★
() автор топика
12 октября 2012 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.