2012-02-18 56 views
0

我想使用我編寫的簡單的非SIP客戶端程序從我的電腦進行遠程撥號,並將命令發送到專用的SIP客戶端,該客戶端通過TCP連接接受遠程命令。專有SIP客戶端將使用我的PC的IP和端口號在SDP中爲RTP撥打遠程方。原則上這可能嗎?有沒有可用的開源客戶端使用這個概念?是否有任何可用的文檔(IETF RFC,博客等)。使用SIP客戶端的遠程撥號

欣賞此事的任何幫助。

+0

你的道具的協議是什麼。 SIP客戶端?它是什麼客戶?請提供更多細節! – CharlesB 2012-02-18 08:02:05

+0

支持SIP客戶端使用SIP與軟交換(星號,freeswitch等)進行通信。它使用簡單的專有請求響應命令在另一端與我的TCP客戶端進行通信。 – 2012-02-18 08:11:53

+0

好吧,如果你知道協議,那麼問題是什麼? – CharlesB 2012-02-18 08:17:46

回答

0

檢查出pjsip,它是一個開源的跨平臺SIP客戶端,適用於所有主要平臺,並且具有C語言API和python API包裝,無論您喜歡什麼。他們的網站上也有例子。將您的TCP解析代碼PJSIP並調用其功能發起呼叫,你可以找到如何做到這一點在其網站上

+0

PJSIP和TCP客戶端在不同的機器上。我怎樣才能得到我的遠程TCP客戶端的RTP供稿。我想過爲此指定遠程端口和遠程IP地址。但這會工作嗎?有任何想法嗎?感謝您的答覆。 – 2012-03-03 10:12:50

+0

理論上,通過仔細調整INVITE消息的SDP參數,可能會將RTP流重定向到第三個IP,但我從來沒有這樣做,或者從來沒有聽過任何人會這樣做,所以沒有保證成功。從這裏開始:http://www.ietf.org/rfc/rfc2327.txt – MrTJ 2012-03-05 09:12:59

+0

Skype4b Android SDK是否支持允許修改消息的SDP部分,以便媒體RTP流將路由到不同的IP地址和端口比運行的應用程序? 可以提取遠程連接的SDP信息,以便將信息發送到Linux機器上? – 2016-11-16 07:07:06

0

如果我理解正確的話,這裏是你想做的事:

TCP    SIP/SDP/RTP 
PC <===> SIP client <===========> softswitch 

實際上,PC和SIP客戶端之間的TCP對於信令可能是準確的,但對於媒體來說可能是準確的,因爲RTP媒體流通常通過UDP發送。

在我看來,第一步是要確保你的軟交換將接受發送RTP數據包是不一樣的SIP客戶端的IP地址(我想大多數人拒絕出於安全原因)。如果它接受並且您的SIP客戶端和PC之間沒有NAT,則應該能夠將RTP流直接發送到您的PC。在這種情況下,您必須檢索RTP數據包,最終重新排列它們,解壓縮它們的有效負載並將它們饋送到揚聲器。

如果您的軟交換不希望將RTP數據包發送到與SIP IP地址不同的IP地址,則必須將您的SIP客戶端的RTP數據包轉發到您的PC。但是如果你不能修改你的SIP客戶端來做到這一點(可能是因爲它是一個專有軟件),你可能會陷入困境。

要測試您的軟交換是否接受將RTP數據包發送到意外的IP地址,您可以使用sipp並指定與SIP信令IP地址不同的遠程媒體IP地址。

+0

Skype4b Android SDK是否支持允許修改消息的SDP部分,這樣媒體RTP流將被路由到與運行應用程序不同的IP地址和端口? 可以提取遠程連接的SDP信息,以便將信息發送到Linux機器上? – 2016-11-16 07:06:57