OSIP在NT平台下的測試

2021-08-26 04:14:07 字數 3449 閱讀 2026

上面,我們得到了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就是為了我們安裝第三方擴充套件包更容易...