C語言實現sip客戶端 1
阿新 • • 發佈:2019-01-25
開源的sip伺服器端,使用過的最好用的是Asterisk,標準C程式實現,程式碼清晰。
sip的client相對比較多,個人使用過有exosip,pjsip和opal。
根據使用經驗,exosip簡單易用,在PC上用比較方便。但是涉及的相關資源太多,用了osip,srtp,ms2等眾多的開源庫,ms2下面還用到了ffmpeg,別的不說,光編譯就是噩夢。
opal功能最強,雖然也用到了ffmpeg ,但是自己封裝的非常好,採用外掛方式,呼叫靈活。opal採用class方式提供封裝,介面非常友好。感覺唯一不爽的地方,就是低層使用了ptlib,雖然多平臺下都很好用,但放在嵌入式下感覺稍龐大了一些。
pjsip精巧,方便移植,嵌入式下應該是首選。不過視訊頻支援方面擴充套件起來比opal麻煩。個人感覺,對於windows開發者來說,pjsip最大的好處就是程式碼除錯方便。整個工程一次編譯通過,另外兩個庫還要找很多相關的資源。
其他的一些協議棧也除錯過,比如reSipphone,好象是這個名字,還有Yate,不過從快速開發角度看,都不太合適。
現在搞sip開發的,一開始就是先找好協議棧。我開始時也是,滿天找別人的例子,可惜的很,完整的Demo總是找不到。linphone,ekiga什麼的,但龐大。對於剛開始做的,最好是一個精簡的demo。後來找到pjsip下面的幾個例子,慢慢地瞭解了sip的工作流程,當然少不了抓包工具和tcpdump。
不過,其實,sip沒有想象中的那麼麻煩。現在回頭看,剛開始做專案,使用協議棧絕對不是好想法。如果換個方向,先熟悉SIP基本協議,然後自己改造一個,或完全寫一個,可能效果更好。
這裡簡單提一下,下一篇開始詳細介紹怎麼用c完全寫sip client.