簡體   English   中英

使用mjsip / jmf時無法訪問本地RTP端口

[英]local RTP port unreachable when using mjsip/jmf

我使用mjsip創建到外部voip提供程序的sip會話。 然后,我使用RtpManager通過rtp將測試wav文件傳輸給提供程序。

該程序運行沒有錯誤,我接了飲酒電話。 但是,沒有音頻被傳輸。 當我用Wireshark診斷網絡流量時,我看到一堆RTP流量從我的本地主機(在某種nat后面)到voip提供程序,什么也沒回來。

一段時間后,我從提供程序到本地主機收到ICMP錯誤“目標不可達(端口不可達)”。

linphone軟件使用相同的localhost和voip提供程序工作-盡管它使用的是不同的sip堆棧。

有什么建議么?

謝謝

您已經回答了自己的問題,但是是的,您是對的:一段時間后,如果Callee / UAS沒有收到ACK,它將認為連接建立失敗。

SIP RFC告訴我們,UAS的服務器INVITE事務在發送200 OK時將進入Completed狀態。 ACK的接收將其發送到Confirmed狀態。

但是,如果UAS在發送200 OK時發生傳輸錯誤,或者未能及時接收到ACK(計時器H觸發(默認情況下為64 * T1 = 64 * 500m = 32秒),則UAS將進入已終止狀態。

D'哦!

發現問題是當在呼叫偵聽器類中接受我的呼叫時,我沒有向SIP 200消息發送ACK。 因此,voip客戶端忽略了相應的rtp請求。

public void onCallAccepted(Call call, String sdp, Message resp){
    System.out.println("call accepted");
    call.ackWithAnswer(sdp); //this was the missing line I needed
    this.setupRtpSession(call);
}

希望這可以幫助任何有類似問題的人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM