上面,我們得到了osip的解析器開發庫,下面再編譯完整的osip協
議棧開發庫,同樣照上述方法,分別建立動態鏈結庫工程和靜態鏈結庫工程,只
是要拷的檔案換成src下的osip目錄下檔案和include下的osip目錄,得到
osip2.dll和osip2.lib。
在編譯osip2.dll這一步可能會再次得到錯誤,內容含義是找不到鏈結庫,所
以,我們要把前面編譯得到的osipparser2.lib也拷到osip工程目錄下,並在vc
6中操作:
project-setting-link中的object/libr
ary modules:
kernel32.lib user32.lib ... ***.lib之類的內容最後增加:
osipparser2.lib
儲存工程後再次編譯,即可成功編譯osip2.dll。
-------------------
至此,我們得到了完整的osip開發庫,使用時,只需在我們的程式裡包
含osip的標頭檔案,工程的鏈結引數裡增加osipparser2.lib和osip2.lib即可
-----------------------------------
-------------------
下面我們驗證一下我們得到的開發庫,並大概了解一下osip的語法規範
。在vc裡建立win32控制台程式工程,將libosip原始碼包的src目錄下的test目錄
內的c源程式隨便拷乙個到工程時,直接編譯(工程設定裡照前文方法在link選項
裡增加osip2.lib,osipparser2.lib引用我們之前成功編譯得到的靜態庫檔案)就
可以執行(帶引數執行,引數一般為乙個文字檔案,同樣從test目錄的res目錄裡
拷乙個與原始檔同名的純文字檔案到工程目錄下即可)。
該目錄下的若干檔案基本上是測試了osip的一些基本功能函式,例如uri解析
之類,可以大概了解一下osip的語法規範和呼叫方法,同時也能校驗一下之前編
譯的osip開發庫能否正常使用,成功完成本項工作後,可以進入下一步具體的
osip的使用學習了。
-------------------
由於osip是比較底層的sip協議棧實現,新手較難上手,而官方的示
例大都是一些偽**,需要有實際的例子程式參考學習,而最好的例子就是同樣
官方發布的osip的擴充套件開發庫exosip2,使用exosip可以很方便地快
速建立乙個完整的sip程式(只針對性地適用於sip終端開發用,所以我們這裡
只是用它快速開發乙個sip終端,用來更方便地學習osip,要想真正掌握sip的開
發,需要掌握osip並熟讀rfc文件才行,exosip不是我們的最終學習目的),通過
成功編譯執行乙個自己動手開發出的程式,再由淺入深應該是初學都最好的學習
方法通過對使用exosip開發庫的使用建立自己的sip程式,熟悉後再乙個函式
乙個函式地深入學習exosip提供的介面函式,就可以深入理解osip 了,達到間接
學習osip的目的,同時也能從exosip中學習到正確使用osip的良好的編
程風格和語法格式。
而要成功編譯exosip,似乎許多人被難住了,直接在xp-sp2上
,用vc6,雖然你使用了exosip推薦的winsock2.h,但是會得到乙個
sockaddr_storage結構不能識別的錯誤,因為vc6自帶的開發庫太古董了,需要公升
支援已經停止,這是vc6能使用的最新sdk)
成功安裝後編譯前需加osip_mt巨集,以啟用執行緒庫,否則在程式中使用exosip
庫時會出錯,而編譯時也會得到許多函式未定義的warning提示,編譯得到
exosip2.lib供我們使用,當然,在此之前需要成功編譯了osip2和osipparser2,
而在之後的實際使用時,發現osip也需要增加osip_mt巨集,否則os
ip_mt呼叫osip的執行緒庫時會出錯,所以我們需要重新編譯osip了
程,並需在link中手工新增osip和osipparser的lib庫)。
-------------------
建立新工程,可以是任意工程,我們從最簡單的win32控制台程式開始
,為了成功使用osip,我們需要引用相關庫,呼叫相關標頭檔案,經過多次試
驗,發現需要引用如下的庫:
exosip2.lib osip2.lib osipparser2.lib wsock32.lib iphlpapi.lib
ws2_32.lib dnsapi.lib
其中,除了我們上面編譯得到的三個osip庫外,其它庫都是系統庫,其中有
一些是新安裝的platform sdk所新提供的。
至此,我們有了乙個簡單的開發環境了,可以充分利用網上大量的以osi
p為基礎的**片段和官方說明文件開始具體函式功能的測試和使用了:)
-------------------
我們先進行乙個簡單的純sip信令(不帶語音連線建立)的uac的si
p終端的程式開發的試驗(即乙個只能作為主叫不能作為被叫的的sip軟**
模型),我們建立乙個mfc應用程式,對話方塊模式,照上面的說明,設定工程
包含我們上面得到的osip的相關開發庫及sdk的一些開發庫,並且由於默
認libc的衝突,需要排除msvcrt[d]開發庫(其中d代表debug模式下,
沒有d表示release模式下),直接使用exosip的幾個主要函式就
可以建立乙個基本的sip軟**模型。
其主要流程為:
初始化exosip庫-啟動事件監聽執行緒-向sip proxy註冊-
向某sip終端(**號碼)發起呼叫-建立連線-結束連線
初始化**:
int ret = 0;
ret = exosip_init ();
exosip_set_user_agent("##youtoo0.1");
if(0 != ret)
ret = exosip_listen_addr (ipproto_udp, null, 0, af_inet, 0);
if(0 != ret)
啟動事件監聽執行緒:
afxbeginthread(sip_uac,(void *)this);
向sip proxy註冊:
exosip_clear_authentication_info();
exosip_add_authentication_info(uname, uname, upwd, "md5",
null);
real_send_register(30); /* 自定義函式**請見原始碼 */
發起呼叫(構建假的sdp描述,實際軟**使用它構建rtp**連線)
:osip_message_t *invite = null; /* 呼叫發起訊息體 */
int i = exosip_call_build_initial_invite (&invite, dest_call,
Lua Socket在Windows平台下的使用
lua的乙個比較實用的拓展庫 lua socket 在windows 下平台的使用。在網上檢視了許多關於lua socket的安裝,發現大部分都是在 linux 下的安裝,關於在 windows 平台下的使用說明很少,而且發現問題挺多。本文將介紹乙個極其簡單的方式介紹 lua socket 在win...
pip在不同平台下的安裝
pip類似redhat裡面的yum,安裝python包非常方便。本節詳細介紹pip的安裝 以及使用方法。要先安裝python和easy install,這樣安裝其他軟體就方便了很多。windows下安裝 python的指令碼路徑放入了path中 1 用easy install安裝pip。在cmd中輸...
easy install在不同平台下的安裝
為什麼要裝easy install?python setup.py install 來進行安裝。這樣是不是很繁瑣呢?如果我們直接命令列執行 easy install twisted 就把最新版的twisted包裝上去了,是不是很爽呢?所以easy install就是為了我們安裝第三方擴充套件包更容易...