真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言實現(xiàn)sip協(xié)議 golang sip協(xié)議

Go語言HTTPServer開發(fā)的六種實現(xiàn)

學完了 net/http 和 fasthttp 兩個HTTP協(xié)議接口的客戶端實現(xiàn),接下來就要開始Server的開發(fā),不學不知道一學嚇一跳,居然這兩個庫還支持Server的開發(fā),太方便了。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務永順,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

相比于Java的HTTPServer開發(fā)基本上都是使用Spring或者Springboot框架,總是要配置各種配置類,各種 handle 對象。Golang的Server開發(fā)顯得非常簡單,就是因為特別簡單,或者說沒有形成特別統(tǒng)一的規(guī)范或者框架,我發(fā)現(xiàn)了很多實現(xiàn)方式,HTTP協(xié)議基于還是 net/http 和 fasthttp ,但是 handle 語法就多種多樣了。

先復習一下: Golang語言HTTP客戶端實踐 、 Golang fasthttp實踐 。

在Golang語言方面,實現(xiàn)某個功能的庫可能會比較多,有機會還是要多跟同行交流,指不定就發(fā)現(xiàn)了更好用的庫。下面我分享我學到的六種Server開發(fā)的實現(xiàn)Demo。

基于 net/http 實現(xiàn),這是一種比較基礎(chǔ)的,對于接口和 handle 映射關(guān)系處理并不優(yōu)雅,不推薦使用。

第二種也是基于 net/http ,這種編寫語法可以很好地解決第一種的問題,handle和path有了類似配置的語法,可讀性提高了很多。

第三個基于 net/http 和 github點抗 /labstack/echo ,后者主要提供了 Echo 對象用來處理各類配置包括接口和handle映射,功能很豐富,可讀性最佳。

第四種依然基于 net/http 實現(xiàn),引入了 github點抗 /gin-gonic/gin 的路由,看起來接口和 handle 映射關(guān)系比較明晰了。

第五種基于 fasthttp 開發(fā),使用都是 fasthttp 提供的API,可讀性尚可,handle配置倒是更像Java了。

第六種依然基于 fasthttp ,用到了 github點抗 /buaazp/fasthttprouter ,有點奇怪兩個居然不在一個GitHub倉庫里。使用語法跟第三種方式有點類似,比較有條理,有利于閱讀。

sip協(xié)議如何用C語言實現(xiàn)

1、開源的sip服務器端,比較好用的是Asterisk,標準C程序?qū)崿F(xiàn),代碼清晰。

2、sip的client相對比較多,主要有exosip,pjsip和opal。exosip簡單易用,在PC上用比較方便。但是涉及的相關(guān)資源太多,用了osip,srtp,ms2等眾多的開源庫,ms2下面還用到了ffmpeg,別的不說,光編譯就是噩夢。opal功能最強,雖然也用到了ffmpeg ,但是自己封裝的非常好,采用插件方式,調(diào)用靈活。opal采用class方式提供封裝,接口非常友好。感覺唯一不爽的地方,就是低層使用了ptlib,雖然多平臺下都很好用,但放在嵌入式下感覺稍龐大了一些。pjsip精巧,方便移植,嵌入式下應該是首選。不過視頻頻支持方面擴展起來比opal麻煩。個人感覺,對于windows開發(fā)者來說,pjsip最大的好處就是代碼調(diào)試方便。整個工程一次編譯通過,另外兩個庫還要找很多相關(guān)的資源

。

3、其他的一些協(xié)議棧也調(diào)試過,比如reSipphone,好象是這個名字,還有Yate,不過從快速開發(fā)角度看,都不太合適?,F(xiàn)在搞sip開發(fā)的,一開始就是先找好協(xié)議棧。linphone,ekiga什么的,但龐大。對于剛開始做的,最好是一個精簡的demo。后來找到pjsip下面的幾個例子,慢慢地了解了sip的工作流程,當然少不了抓包工具和tcpdump。

不過,其實,sip沒有想象中的那么麻煩?,F(xiàn)在回頭看,剛開始做項目,使用協(xié)議棧絕對不是好想法。如果換個方向,先熟悉SIP基本協(xié)議,然后自己改造一個,或完全寫一個,可能效果更好。

一學就會,手把手教你用Go語言調(diào)用智能合約

智能合約調(diào)用是實現(xiàn)一個 DApp 的關(guān)鍵,一個完整的 DApp 包括前端、后端、智能合約及區(qū)塊 鏈系統(tǒng),智能合約的調(diào)用是連接區(qū)塊鏈與前后端的關(guān)鍵。

我們先來了解一下智能合約調(diào)用的基礎(chǔ)原理。智能合約運行在以太坊節(jié)點的 EVM 中。因此要 想調(diào)用合約必須要訪問某個節(jié)點。

以后端程序為例,后端服務若想連接節(jié)點有兩種可能,一種是雙 方在同一主機,此時后端連接節(jié)點可以采用 本地 IPC(Inter-Process Communication,進 程間通信)機制,也可以采用 RPC(Remote Procedure Call,遠程過程調(diào)用)機制;另 一種情況是雙方不在同一臺主機,此時只能采用 RPC 機制進行通信。

提到 RPC, 讀者應該對 Geth 啟動參數(shù)有點印象,Geth 啟動時可以選擇開啟 RPC 服務,對應的 默認服務端口是 8545。。

接著,我們來了解一下智能合約運行的過程。

智能合約的運行過程是后端服務連接某節(jié)點,將 智能合約的調(diào)用(交易)發(fā)送給節(jié)點,節(jié)點在驗證了交易的合法性后進行全網(wǎng)廣播,被礦工打包到 區(qū)塊中代表此交易得到確認,至此交易才算完成。

就像數(shù)據(jù)庫一樣,每個區(qū)塊鏈平臺都會提供主流 開發(fā)語言的 SDK(Software Development Kit,軟件開發(fā)工具包),由于 Geth 本身就是用 Go 語言 編寫的,因此若想使用 Go 語言連接節(jié)點、發(fā)交易,直接在工程內(nèi)導入 go-ethereum(Geth 源碼) 包就可以了,剩下的問題就是流程和 API 的事情了。

總結(jié)一下,智能合約被調(diào)用的兩個關(guān)鍵點是節(jié)點和 SDK。

由于 IPC 要求后端與節(jié)點必須在同一主機,所以很多時候開發(fā)者都會采用 RPC 模式。除了 RPC,以太坊也為開發(fā)者提供了 json- rpc 接口,本文就不展開討論了。

接下來介紹如何使用 Go 語言,借助 go-ethereum 源碼庫來實現(xiàn)智能合約的調(diào)用。這是有固定 步驟的,我們先來說一下總體步驟,以下面的合約為例。

步驟 01:編譯合約,獲取合約 ABI(Application Binary Interface,應用二進制接口)。 單擊【ABI】按鈕拷貝合約 ABI 信息,將其粘貼到文件 calldemo.abi 中(可使用 Go 語言IDE 創(chuàng)建該文件,文件名可自定義,后綴最好使用 abi)。

最好能將 calldemo.abi 單獨保存在一個目錄下,輸入“l(fā)s”命令只能看到 calldemo.abi 文件,參 考效果如下:

步驟 02:獲得合約地址。注意要將合約部署到 Geth 節(jié)點。因此 Environment 選擇為 Web3 Provider。

在【Environment】選項框中選擇“Web3 Provider”,然后單擊【Deploy】按鈕。

部署后,獲得合約地址為:0xa09209c28AEf59a4653b905792a9a910E78E7407。

步驟 03:利用 abigen 工具(Geth 工具包內(nèi)的可執(zhí)行程序)編譯智能合約為 Go 代碼。abigen 工具的作用是將 abi 文件轉(zhuǎn)換為 Go 代碼,命令如下:

其中各參數(shù)的含義如下。 (1)abi:是指定傳入的 abi 文件。 (2)type:是指定輸出文件中的基本結(jié)構(gòu)類型。 (3)pkg:指定輸出文件 package 名稱。 (4)out:指定輸出文件名。 執(zhí)行后,將在代碼目錄下看到 funcdemo.go 文件,讀者可以打開該文件欣賞一下,注意不要修改它。

步驟 04:創(chuàng)建 main.go,填入如下代碼。 注意代碼中 HexToAddress 函數(shù)內(nèi)要傳入該合約部署后的地址,此地址在步驟 01 中獲得。

步驟 04:設(shè)置 go mod,以便工程自動識別。

前面有所提及,若要使用 Go 語言調(diào)用智能合約,需要下載 go-ethereum 工程,可以使用下面 的指令:

該指令會自動將 go-ethereum 下載到“$GOPATH/src/github點抗 /ethereum/go-ethereum”,這樣還算 不錯。不過,Go 語言自 1.11 版本后,增加了 module 管理工程的模式。只要設(shè)置好了 go mod,下載 依賴工程的事情就不必關(guān)心了。

接下來設(shè)置 module 生效和 GOPROXY,命令如下:

在項目工程內(nèi),執(zhí)行初始化,calldemo 可以自定義名稱。

步驟 05:運行代碼。執(zhí)行代碼,將看到下面的效果,以及最終輸出的 2020。

上述輸出信息中,可以看到 Go 語言會自動下載依賴文件,這就是 go mod 的神奇之處。看到 2020,相信讀者也知道運行結(jié)果是正確的了。

請問什么是SIP協(xié)議?

SIP(Session Initiation Protocol,會話初始協(xié)議)是由IETF(Internet Engineering Task Force,因特網(wǎng)工程任務組)制定的多媒體通信協(xié)議。它是一個基于文本的應用層控制協(xié)議,用于創(chuàng)建、修改和釋放一個或多個參與者的會話。廣泛應用于CS(Circuit Switched,電路交換)、NGN(Next Generation Network,下一代網(wǎng)絡(luò))以及IMS(IP Multimedia Subsystem,IP多媒體子系統(tǒng))的網(wǎng)絡(luò)中,可以支持并應用于語音、視頻、數(shù)據(jù)等多媒體業(yè)務,同時也可以應用于Presence(呈現(xiàn))、Instant Message(即時消息)等特色業(yè)務??梢哉f,有IP網(wǎng)絡(luò)的地方就有SIP協(xié)議的存在。[1-2] SIP是類似于HTTP。SIP可以減少應用特別是高級應用的開發(fā)時間。由于基于IP協(xié)議的SIP利用了IP網(wǎng)絡(luò),固定網(wǎng)運營商也會逐漸認識到SIP技術(shù)對于他們的遠意義。中文名會話初始化協(xié)議外文名Session Initiation Protocol出現(xiàn)時間二十世紀九十年代中期發(fā)布機構(gòu)IETF發(fā)布時間1999年目錄1會話協(xié)議

? 壓縮機制? 應用

2發(fā)展歷程

3通信要求

4會話構(gòu)成

? 用戶代理? 注冊服務器? 代理服務器? 重定向服務器

5常用消息

6協(xié)議比較

? 標準應用目標? 標準體系結(jié)構(gòu)? 系統(tǒng)組成結(jié)構(gòu)? 實現(xiàn)難易性? 總 結(jié)

7相關(guān)技術(shù)? 開源項目? 5Java1會話協(xié)議SIPSIP(Session Initiation Protocol)是一個應用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個或多個參與者的會話。這些會話可以是Internet多媒體會議[3] 、IP電話或多媒體分發(fā)。會話的參與者可以通過組播(multicast)、網(wǎng)狀單播(unicast)或兩者的混合體進行通信。SIP與負責語音質(zhì)量的資源預留協(xié)議(RSVP) 互操作。它還與若干個其他協(xié)議進行協(xié)作,包括負責定位的輕型目錄訪問協(xié)議(LDAP)、負責身份驗證的遠程身份驗證撥入用戶服務 (RADIUS) 以及負責實時傳輸?shù)?RTP 等多個協(xié)議。SIP 的一個重要特點是它不定義要建立的會話的類型,而只定義應該如何管理會話。有了這種靈活性,也就意味著SIP可以用于眾多應用和服務中,包括交互式游戲、音樂和視頻點播以及語音、視頻和 Web 會議。SIP消息是基于文本的,因而易于讀取和調(diào)試。新服務的編程更加簡單,對于設(shè)計人員而言更加直觀。SIP如同電子郵件客戶機一樣重用 MIME 類型描述,因此與會話相關(guān)的應用程序可以自動啟動。SIP 重用幾個現(xiàn)有的比較成熟的 Internet 服務和協(xié)議,如 DNS、RTP、RSVP 等。不必再引入新服務對 SIP 基礎(chǔ)設(shè)施提供支持,因為該基礎(chǔ)設(shè)施很多部分已經(jīng)到位或現(xiàn)成可用。對 SIP 的擴充易于定義,可由服務提供商在新的應用中添加,不會損壞網(wǎng)絡(luò)。網(wǎng)絡(luò)中基于 SIP 的舊設(shè)備不會妨礙基于 SIP 的新服務。例如,如果舊 SIP 實施不支持新的 SIP 應用所用的方法/標頭,則會將其忽略。SIP 獨立于傳輸層。因此,底層傳輸可以是采用 ATM 的 IP。SIP 使用用戶數(shù)據(jù)報協(xié)議(UDP) 以及傳輸控制協(xié)議(TCP),將獨立于底層基礎(chǔ)設(shè)施的用戶靈活地連接起來。SIP 支持多設(shè)備功能調(diào)整和協(xié)商。如果服務或會話啟動了視頻和語音,則仍然可以將語音傳輸?shù)讲恢С忠曨l的設(shè)備,也可以使用其他設(shè)備功能,如單向視頻流傳輸功能。通信提供商及其合作伙伴和用戶越來越渴求新一代基于 IP 的服務。如今有了 SIP(The Session Initiation Protocol 會話啟動協(xié)議),一解燃眉之急。SIP 是不到十年前在計算機科學實驗室誕生的一個想法。它是第一個適合各種媒體內(nèi)容而實現(xiàn)多用戶會話的協(xié)議,如今已成了 Internet 工程任務組 (IETF) 的規(guī)范。今天,越來越多的運營商、CLEC(競爭本地運營商)和 ITSP(IP 電話服務商)都在提供基于 SIP 的服務,如市話和長途電話技術(shù)、在線信息和即時消息、IP Centrex/Hosted PBX、語音短信、push-to-talk(按鍵通話)、多媒體會議等等。獨立軟件供應商 (ISV) 正在開發(fā)新的開發(fā)工具,用來為運營商網(wǎng)絡(luò)構(gòu)建基于 SIP 的應用程序以及 SIP 軟件。網(wǎng)絡(luò)設(shè)備供應商 (NEV) 正在開發(fā)支持 SIP 信令和服務的硬件。如今,有眾多 IP 電話、用戶代理、網(wǎng)絡(luò)代理服務器、VOIP網(wǎng)關(guān)、媒體服務器和應用服務器都在使用 SIP。SIP 從類似的權(quán)威協(xié)議--如 Web超文本傳輸協(xié)議(HTTP) 格式化協(xié)議以及簡單郵件傳輸協(xié)議(SMTP) 電子郵件協(xié)議--演變而來并且發(fā)展成為一個功能強大的新標準。但是,盡管 SIP 使用自己獨特的用戶代理和服務器,它并非自成一體地封閉工作。SIP 支持提供融合的多媒體服務,與眾多負責身份驗證、位置信息、語音質(zhì)量等的現(xiàn)有協(xié)議協(xié)同工作。SIP 較為靈活,可擴展,而且是開放的。它激發(fā)了 Internet 以及固定和移動 IP 網(wǎng)絡(luò)推出新一代服務的威力。SIP 能夠在多臺 PC 和電話上完成網(wǎng)絡(luò)消息,模擬 Internet 建立會話。與存在已久的國際電信聯(lián)盟(ITU) SS7 標準(用于呼叫建立)和 ITU H.323 視頻協(xié)議組合標準不同,SIP 獨立工作于底層網(wǎng)絡(luò)傳輸協(xié)議和媒體。它規(guī)定一個或多個參與方的終端設(shè)備如何能夠建立、修改和中斷連接,而不論是語音、視頻、數(shù)據(jù)或基于 Web 的內(nèi)容。SIP 大大優(yōu)于現(xiàn)有的一些協(xié)議,如將 PSTN 音頻信號轉(zhuǎn)換為 IP 數(shù)據(jù)包的媒體網(wǎng)關(guān)控制協(xié)議(MGCP)。因為 MGCP 是封閉的純語音標準,所以通過信令功能對其進行增強比較復雜,有時會導致消息被破壞或丟棄,從而妨礙提供商增加新的服務。而使用 SIP,編程人員可以在不影響連接的情況下在消息中增加少量新信息。例如,SIP 服務提供商可以建立包含語音、視頻和聊天內(nèi)容的全新媒體。如果使用 MGCP、H.323 或 SS7 標準,則提供商必須等待可以支持這種新媒體的協(xié)議新版本。而如果使用 SIP,盡管網(wǎng)關(guān)和設(shè)備可能無法識別該媒體,但在兩個大陸上設(shè)有分支機構(gòu)的公司可以實現(xiàn)媒體傳輸。而且,因為 SIP 的消息構(gòu)建方式類似于 HTTP,開發(fā)人員能夠更加方便便捷地使用通用的編程語言(如 Java)來創(chuàng)建應用程序。對于等待了數(shù)年希望使用 SS7 和高級智能網(wǎng)絡(luò)(AIN) 部署呼叫等待、主叫號碼識別以及其他服務的運營商,現(xiàn)在如果使用 SIP[4] ,只需數(shù)月時間即可實現(xiàn)高級通信服務的部署。這種可擴展性已經(jīng)在越來越多基于 SIP 的服務中取得重大成功。Vonage 是針對用戶和小企業(yè)用戶的服務提供商。它使用 SIP 向用戶提供 20,000 多條數(shù)字市話、長話及語音郵件線路。Deltathree 為服務提供商提供 Internet 電話技術(shù)產(chǎn)品、服務和基礎(chǔ)設(shè)施。它提供了基于 SIP 的 PC 至電話解決方案,使 PC 用戶能夠呼叫全球任何一部電話。Denwa Communications 在全球范圍內(nèi)批發(fā)語音服務。它使用 SIP 提供 PC 至 PC 及電話至 PC 的主叫號碼識別、語音郵件,以及電話會議、統(tǒng)一通信、客戶管理、自配置和基于 Web 的個性化服務。某些權(quán)威人士預計,SIP 與 IP 的關(guān)系將發(fā)展成為類似 SMTP 和 HTTP 與 Internet 的關(guān)系,但也有人說它可能標志著 AIN 的終結(jié)。迄今為止,3G 界已經(jīng)選擇 SIP 作為下一代移動網(wǎng)絡(luò)的會話控制機制。Microsoft 已經(jīng)選擇 SIP 作為其實時通信策略并在 Microsoft XP、Pocket PC 和 MSN Messenger 中進行了部署。Microsoft 同時宣布 CE dot net 的下一個版本將使用基于 SIP 的 VoIP 應用接口層,并承諾向用戶 PC 提供基于 SIP 的語音和視頻呼叫。另外,MCI 正在使用 SIP 向 IP 通信用戶部署高級電話技術(shù)服務。用戶將能夠通知主叫方自己是否有空以及首選的通信方式,如電子郵件、電話或即時消息。利用在線信息,用戶還能夠即時建立聊天會話和召開音頻會議。使用 SIP 將不斷地實現(xiàn)各種功能。壓縮機制SIP 壓縮機制主要是通過改變 SIP 消息的長度來降低時延。典型的 SIP 消息的大小由幾百到幾千字節(jié),為了適合在窄帶無線信道上傳輸,IMS對SIP進行了擴展,支持SIP消息的壓縮。當無線信道一定時, 一條SIP消息所含幀數(shù) k僅取決于消息大小。從時延模型可以看出,不僅影響 SIP 消息傳輸時延, 還影響SIP重傳的概率, 對自適應的定時器來說,k還成了影響定時器初值的關(guān)鍵因素。[5] 應用google 發(fā)布世界上首個開源的Html5 sip 客戶端HTML5 SIP客戶端是一款開源的,完全利用JavaScript編寫的集社交(FaceBook,Twitter,Google+),在線游戲,電子商務等應用于一體。無擴展,無插件或是必備的網(wǎng)關(guān),視頻堆棧技術(shù)依賴于WebRTC。如同主頁

目前,SIP是類似于HTTP的基于文本的協(xié)議。SIP可以減少應用特別是高級應用的開發(fā)時間。由于基于IP協(xié)議的SIP利用了IP網(wǎng)絡(luò),固定網(wǎng)運營商也會逐漸認識到SIP技術(shù)對于他們的深遠意義。

市場上幾乎所有的IP語音相關(guān)產(chǎn)品都遵循了ITU-T組織所公布的H.323協(xié)議。雖然這些產(chǎn)品的開發(fā)和制作都將H.323標準作為了實際的制作標準,但是由于H.323主要是是對局域網(wǎng)中的數(shù)據(jù)傳輸進行了描述,但是其中很少有設(shè)計IP電話方面的描述,并且各個廠商在實際的開發(fā)與實現(xiàn)過程中,所選取的H.323協(xié)議中的內(nèi)容也并不相同,也就是說雖然各大廠商都遵循H.323協(xié)議,但是所遵循的協(xié)議并不相同。因此,也導致了各大廠商之間的IP電話并不能夠進行相互之間的通話。導致了企業(yè)內(nèi)部IP語音通信系統(tǒng)在進行設(shè)計時就必須選取同一個廠商生產(chǎn)的網(wǎng)關(guān)等設(shè)備。這對IP語音通信系統(tǒng)的發(fā)展產(chǎn)生了很大的制約。目前,大家都己經(jīng)認識到了這個問題,并且都紛紛要求能夠有一個真正統(tǒng)一的一個標準,并且,各大廠商都進行了一定程度的聯(lián)盟,來研究IP語音通信系統(tǒng)真正標準的制定。


網(wǎng)站題目:go語言實現(xiàn)sip協(xié)議 golang sip協(xié)議
瀏覽路徑:http://weahome.cn/article/ddigdjc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部