2012-03-30 3 views
0

У меня странная проблема с использованием Jain Sip (dowload Today Version Jain-sip-ri-1.2.2014.jar). Я подключаюсь к УАТС, чтобы делать с ней какие-то вещи uaCSTA. Соединение работает отлично, я также могу выполнять команды MakeCall и т. Д., Но через некоторое время (~ 20 минут) Jain Sip Stack, похоже, больше не вызывает метод processRequest. Кажется, что Session-Expires или таймаут между ReInvites не имеет значения.Jain Sip processRequest Method в SipListener не называется

Я проследил все сообщение с Wireshark, поэтому я знаю, что есть запрос.

Связь идет следующим образом.

1. me -> PBX Request: INVITE sip:xxx CSTA RequestSystemStatus 
2. me <- PBX Status: 100 Trying 
3. me <- PBX Status: 200 Ok   CSTA RequestSystemStatusResponse Normal 
4. me -> PBX ACK    sip:xxx 
5. me -> PBX Request: INFO sip:xxx CSTA MonitorStart 
6. me <- PBX Status: 200 Ok   CSTA MonitorStartResponse 

до сих пор все в порядке. По прошествии некоторого времени ничего не делаю, я вызываю устройство (телефон), поэтому УАТС будет генерировать DeliveredEvent.

x. me <- PBX Request: INFO sip:xxx DeliveredEvent 

это сообщение, посылают в 11 раз, за ​​которым следует 11 сообщениях Bye

x. me <- PBX Request: BYE sip:xxx 

Так почему же метод ProcessRequest не называют? Если вам нужна дополнительная информация, чтобы помочь мне с моей Проблемой, не стесняйтесь спрашивать.

ответ

0

После нескольких часов отладки я наконец нашел проблему. Брандмауэр Windows заблокировал UDP. UPD появился в моей Wire Shark Trace, но никогда не получал Socket моего приложения.

После отправки UDP базовый Интернет-протокол ожидает ответа, потому что это UDP, нет ответа. Но брандмауэр остается открытым, пока не истечет время жизни IP. Вот почему он работает 64 секунды.