2012-03-30 66 views
0

我使用Jain Sip(今天下載版本Jain-sip-ri-1.2.2014.jar)得到了一個奇怪的問題。我連接到一個PBX來做一些uaCSTA的東西。連接工作正常,我也可以執行MakeCall命令等,但一段時間後(約20分鐘),Jain Sip Stack似乎不再調用processRequest方法。我認爲會話過期或ReInvites之間的暫停並不重要。在SipListener中的Jain Sip processRequest方法不叫

我跟蹤了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 

直到現在一切都很好。經過一段時間我什麼都不做,我打電話給被監控的設備(電話),這樣PBX將產生一個DeliveredEvent。

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

此消息是由11個再見消息

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

那麼,爲什麼processRequest方法不叫送11次,然後?如果您需要更多信息來幫助我解決問題,請隨時諮詢。

回答

0

經過幾個小時的調試,我終於找到了問題。 Windows防火牆阻止了UDP。 UPD出現在我的Wire Shark Trace中,但從未被我的應用程序的套接字接收。

發送UDP後,底層的Internet協議會等待響應,因爲它是UDP,因此沒有響應。但防火牆保持打開狀態,直到IP的生存時間到期。這就是爲什麼它工作了64秒。