通信電纜 網(wǎng)絡(luò)設(shè)備 無線通信 云計(jì)算|大數(shù)據(jù) 顯示設(shè)備 存儲(chǔ)設(shè)備 網(wǎng)絡(luò)輔助設(shè)備 信號(hào)傳輸處理 多媒體設(shè)備 廣播系統(tǒng) 智慧城市管理系統(tǒng) 其它智慧基建產(chǎn)品
深圳市西邦源科技有限公司
暫無信息 |
閱讀:2081發(fā)布時(shí)間:2015-4-14
數(shù)字IP網(wǎng)絡(luò)公共廣播系統(tǒng),數(shù)字IP網(wǎng)絡(luò)音頻廣播系統(tǒng)概述
由于音頻信號(hào)可以在網(wǎng)絡(luò)上采用標(biāo)準(zhǔn)互聯(lián)網(wǎng)包的形式傳遞,基于其數(shù)字化的基本特征,動(dòng)態(tài)范圍、信噪比、失真系數(shù)、頻率響應(yīng)等技術(shù)指標(biāo)均大大高于模擬方式,改善了音頻信號(hào)的傳輸質(zhì)量,實(shí)現(xiàn)音頻信號(hào)的多路實(shí)時(shí)分發(fā)和傳輸,大大簡化了系統(tǒng)結(jié)構(gòu),降低了系統(tǒng)成本。因此,對廣播系統(tǒng)進(jìn)行數(shù)字化、網(wǎng)絡(luò)化改造,是公共廣播發(fā)展的趨勢。 深圳市西邦源科技有限公司,銷售劉'S :,直線:;-;:http://www.xbpa。。net
西邦品牌公共廣播是基于IP網(wǎng)絡(luò)技術(shù)和Mp3壓縮技術(shù)設(shè)計(jì)實(shí)現(xiàn)一個(gè)數(shù)字音頻廣播系統(tǒng)。本系統(tǒng)采用以太網(wǎng)網(wǎng)絡(luò)技術(shù),基于C的局域網(wǎng)廣播系統(tǒng),以C/S為模式,基于UDP(用戶數(shù)據(jù)報(bào)協(xié)議)的傳輸方式,以管道為進(jìn)程間的通信方式實(shí)現(xiàn)的廣播,并結(jié)合當(dāng)今zui流行的音頻壓縮技術(shù),實(shí)現(xiàn)多種公共廣播節(jié)目的網(wǎng)絡(luò)實(shí)時(shí)傳送和遠(yuǎn)程互動(dòng)。
【深圳西邦源科技有限公司簡介】
深圳西邦源科技有限公司以下簡稱【西邦】,是一家專業(yè)從事音視頻產(chǎn)品、智能廣播、尋址廣播、公共廣播器材的研發(fā)、生產(chǎn)、銷售為一體的科技開發(fā)型公司。專門從事智能廣播、尋址廣播、公共廣播、背景音樂、多媒體教學(xué)、音響燈光、VOD視頻點(diǎn)播系統(tǒng)等電子信息系統(tǒng)和弱電配套系統(tǒng)提供整體技術(shù)設(shè)計(jì)方案。
我們主要產(chǎn)品有:各種MP3數(shù)字音樂智能播放機(jī)、一線通調(diào)頻尋址廣播、智能廣播系統(tǒng)、消防廣播系統(tǒng)、合并式功率放大器、純后級(jí)功率放大器、前置放大器、仿真草坪音箱、全天候室外防水音柱、壁掛音箱、吸頂音箱、IP數(shù)字智能尋址廣播系統(tǒng)、酒店賓館IP數(shù)字VOD視頻點(diǎn)播系統(tǒng)、校園視頻節(jié)目錄播系統(tǒng)等。
公司擁有擁有一批精通國內(nèi)、技術(shù)的研發(fā)人員和技術(shù)服務(wù)人員,在全國各地都有完善的代理分銷商和技術(shù)服務(wù)機(jī)構(gòu),為客戶提供了zui為的服務(wù)。將隨著產(chǎn)業(yè)的發(fā)展,建立了全國統(tǒng)一直銷聯(lián)保體系,真正排解了用戶的后顧之憂。
公司全面實(shí)施企業(yè)知識(shí)化管理,營造企業(yè)文化,形成良好的人才培訓(xùn)環(huán)境。公司將繼續(xù)秉承"客戶滿意、技術(shù)創(chuàng)新、創(chuàng)造價(jià)值、追求"的價(jià)值觀,倡導(dǎo)"客戶至上,質(zhì)量*"的精神,竭誠為客戶提供zui合適的解決方案、產(chǎn)品與服務(wù)。
目前公司已為內(nèi)蒙、吉林、黑龍江、遼寧、新疆、陜西、貴州、山西、山東、河南、河北、江蘇、安徽、甘肅、云南、湖南、湖北、福建、海南、廣東、北京、天津、上海、重慶、四川、青海、西藏等二十幾個(gè)省市,近千所學(xué)校成功實(shí)現(xiàn)了校園智能廣播、數(shù)字廣播和多媒體教學(xué)應(yīng)用。產(chǎn)品以價(jià)格合理、功能實(shí)用、性能穩(wěn)定、服務(wù)及時(shí)周到深受廣大用戶好評。
三【數(shù)字IP網(wǎng)絡(luò)廣播系統(tǒng)原理描述】
【廣播的概念】
廣播指的是用戶被動(dòng)接收流。在廣播過程中,客戶端接收流,但不能控制流。例如,用戶不能暫停、快進(jìn)或后退該流。廣播方式中資料包的單*個(gè)拷貝將發(fā)送給網(wǎng)絡(luò)上的所有用戶。
廣播可以理解為一個(gè)人通過廣播喇叭對在場的全體說話,這樣做的好處是通話效率高,信息一下子就可以傳遞到全體,廣播在網(wǎng)絡(luò)中的應(yīng)用較多,如客戶機(jī)通過DHCP自動(dòng)獲得IP地址的過程就是通過廣播來實(shí)現(xiàn)的。但是同單播和多播相比,廣播幾乎占用了子網(wǎng)內(nèi)網(wǎng)絡(luò)的所有帶寬。
C/S又稱Client/Server或客戶/服務(wù)器模式??蛻?Client)是指運(yùn)行用戶請求程序,并將這些請求傳送到服務(wù)器的軟件成分。服務(wù)器(Server)有兩個(gè)基本含義:(1)一種在網(wǎng)絡(luò)環(huán)境中提供共享服務(wù)的硬件;(2)為其它軟件成分提供普通化功能服務(wù)的軟件成分,即它是用來管理數(shù)據(jù)資源、并進(jìn)行數(shù)據(jù)庫處理的計(jì)算機(jī)。
【C/S結(jié)構(gòu)的優(yōu)點(diǎn)】
C/S結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。
2.2一般工作原理及特性
客戶/服務(wù)器之間的通訊是通過嚴(yán)格定義的網(wǎng)絡(luò)通信協(xié)議、應(yīng)用程序接口、和遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)的。這種模式將功能很強(qiáng)的數(shù)據(jù)庫管理系統(tǒng)、工具和應(yīng)用軟件等信息資源散布在多個(gè)客戶機(jī)和服務(wù)器上,將應(yīng)用邏輯分割成客戶機(jī)和服務(wù)器兩部分。當(dāng)需要執(zhí)行一個(gè)應(yīng)用時(shí),客戶機(jī)服務(wù)器模式將這個(gè)單一的應(yīng)用分解為可在網(wǎng)絡(luò)上協(xié)調(diào)操作的獨(dú)立組塊,并將這些獨(dú)立組塊分派到客戶機(jī)和服務(wù)器上。客戶機(jī)一般負(fù)責(zé)與用戶交互,承擔(dān)絕大部分顯示和邏輯處理工作,服務(wù)器則負(fù)責(zé)存儲(chǔ)和管理信息、資源來響應(yīng)客戶機(jī)的請求。當(dāng)用戶在客戶機(jī)上運(yùn)行應(yīng)用程序需要某種資源服務(wù)時(shí),客戶機(jī)進(jìn)程向服務(wù)器進(jìn)程發(fā)出請求,服務(wù)器根據(jù)用戶請求完成處理后,再把處理結(jié)果或有關(guān)數(shù)據(jù)傳回客戶機(jī),由客戶機(jī)進(jìn)程完成后繼處理。
【C/S系統(tǒng)結(jié)構(gòu)】
客戶機(jī)進(jìn)程和服務(wù)器進(jìn)程之間的相互作用是協(xié)作式的,事務(wù)是交易式的。其中客戶機(jī)進(jìn)程是主動(dòng)的,先發(fā)出請求給服務(wù)器。它全部用于和用戶的會(huì)話,以會(huì)話的終止為終止。一個(gè)客戶機(jī)可能與一個(gè)或多個(gè)服務(wù)器相互作用來完成工作,然而,至少一個(gè)服務(wù)器進(jìn)程是一直必要的。通過管理與用戶的所有交互作用,客戶機(jī)把服務(wù)器和網(wǎng)絡(luò)對用戶隱藏起來,這就造成了一種幻覺,整個(gè)應(yīng)用只是在局部的執(zhí)行而沒有使用其他的進(jìn)程、機(jī)器和網(wǎng)絡(luò)。而服務(wù)器進(jìn)程是被動(dòng)的,由來自客戶機(jī)的請求的到來所觸發(fā)。通常服務(wù)器進(jìn)程一直存在運(yùn)行,以給客戶機(jī)提供服務(wù)。服務(wù)器是功能特定的:它執(zhí)行一組預(yù)定的、功能相關(guān)的事務(wù)的處理。
【TCP/UDP協(xié)議】
根據(jù)OSI網(wǎng)絡(luò)標(biāo)準(zhǔn)定義,網(wǎng)絡(luò)由物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,會(huì)話層,表示層和應(yīng)用層7層組成。而在實(shí)際應(yīng)用中,網(wǎng)絡(luò)的結(jié)構(gòu)可簡化為鏈路層,網(wǎng)絡(luò)層,傳輸層和應(yīng)用層用戶接口,其結(jié)構(gòu)如圖3所示。
【網(wǎng)絡(luò)TCP/UDP層結(jié)構(gòu)】
在TCP/IP協(xié)議組中,IP協(xié)議是網(wǎng)絡(luò)層協(xié)議。TCP協(xié)議是一種面向連接的協(xié)議。它能夠提供可靠的,全雙工的網(wǎng)絡(luò)通信服務(wù),具有確認(rèn)數(shù)據(jù)流控制,多路復(fù)用和數(shù)據(jù)同步等功能,很適合高質(zhì)量數(shù)據(jù)的傳輸,是目前應(yīng)用的網(wǎng)絡(luò)傳輸協(xié)議之一。由于TCP/IP協(xié)議功能的強(qiáng)大,實(shí)現(xiàn)的復(fù)雜,網(wǎng)絡(luò)開銷很大,給數(shù)據(jù)的傳輸帶來很大的時(shí)延,對實(shí)時(shí)音頻傳輸來說這個(gè)時(shí)延大大超過了人耳所能容忍的程度。因此TCP協(xié)議不適合傳輸實(shí)時(shí)音頻數(shù)據(jù)或?qū)崟r(shí)視頻數(shù)據(jù)和突發(fā)性的大量數(shù)據(jù)。
UDP協(xié)議是英文UserDatagramProtocol的縮寫,即用戶數(shù)據(jù)報(bào)協(xié)議,主要用來支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。
UDP協(xié)議是zui簡單的,面向交易型的無連接協(xié)議,一次交易中往往只有一來一回兩次報(bào)文交換,從而減少了因建立連接和撤除連接所需要的巨大開銷。每個(gè)分組都攜帶完整的目的地地址,在各分組系統(tǒng)中獨(dú)立傳送。它不保證分組的先后順序,不進(jìn)行分組出錯(cuò)的恢復(fù)與重傳,因此不保證傳輸?shù)目煽啃?,不保證服務(wù)質(zhì)量(Qos)。但是相對于TCP協(xié)議,UDP協(xié)議減少了確認(rèn)、同步等操作,節(jié)省了很大的網(wǎng)絡(luò)開銷,它能夠提供高傳輸效率的數(shù)據(jù)報(bào)服務(wù),能夠?qū)崿F(xiàn)數(shù)據(jù)的實(shí)時(shí)性傳輸,在數(shù)據(jù)的實(shí)時(shí)傳輸中應(yīng)用廣泛。因此在網(wǎng)絡(luò)音頻廣播系統(tǒng)的研究中,在沒有更合適的實(shí)時(shí)性高質(zhì)量傳輸協(xié)議的情況下,應(yīng)用UDP協(xié)議的實(shí)時(shí)性是較為合理的解決方案。
【UDP音頻數(shù)據(jù)發(fā)送的實(shí)現(xiàn)】
UDP傳輸時(shí)網(wǎng)絡(luò)數(shù)據(jù)包的傳送質(zhì)量(傳送延時(shí),擁塞,丟包)是動(dòng)態(tài)變化的,尤其是擁塞和丟包,而且對數(shù)據(jù)的實(shí)時(shí)擁塞操作并不容易。在基于UDP協(xié)議的實(shí)時(shí)應(yīng)用中,通常在客戶端設(shè)定一個(gè)緩沖器來減少網(wǎng)絡(luò)的延時(shí)。接收到的數(shù)據(jù)包先壓入緩沖器,當(dāng)緩沖器中達(dá)到預(yù)定數(shù)量的包后,開始解碼播放。這樣可以減少延時(shí)變化的影響,這種緩沖器稱為PlayoutBuffer(簡稱PB),它的大小應(yīng)該是隨著網(wǎng)絡(luò)的變化而變化的。
本系統(tǒng)數(shù)據(jù)的UDP傳輸采用LinuxC語言實(shí)現(xiàn),運(yùn)用LinuxSockets實(shí)現(xiàn)UDP協(xié)議的數(shù)據(jù)傳輸。LinuxSockets規(guī)范定義了如何使用API與Internet協(xié)議族(IPS,通常是指TCP/IP或UDP/IP)的連接,支持流套接字(Socket)和數(shù)據(jù)報(bào)套接字。流套接字提供了雙向的、有序的、無重復(fù)并且無記錄邊界的數(shù)據(jù)流服務(wù),即實(shí)現(xiàn)了TCP協(xié)議的數(shù)據(jù)傳輸,在FTP及遠(yuǎn)程登陸(net)等領(lǐng)域運(yùn)用廣泛。數(shù)據(jù)報(bào)套接寧支持雙向的數(shù)據(jù)流,但并不保證是可靠、有序,確認(rèn)和無重復(fù)的,它實(shí)現(xiàn)的是UDP協(xié)議的數(shù)據(jù)傳輸。應(yīng)用程序調(diào)用LinuxSockets的API實(shí)現(xiàn)通信。LinuxSockets*封裝了UDP協(xié)議,只要調(diào)用Sockets的相應(yīng)函數(shù)就能建立一個(gè)套接字,并與對應(yīng)的套接字通信,實(shí)現(xiàn)UDP數(shù)據(jù)的實(shí)時(shí)傳輸。套接字的工作流程如圖4所示。
【UDP協(xié)議套接字實(shí)現(xiàn)】
當(dāng)數(shù)據(jù)包無序地到達(dá)接收方時(shí),開辟一個(gè)PB緩沖區(qū),根據(jù)包中的序列號(hào)重新排序數(shù)據(jù)。數(shù)據(jù)包的序列號(hào)每發(fā)送一個(gè)自動(dòng)加1,初始值為不可預(yù)料值,序列號(hào)除了可以重組包序外還可用于檢查包丟失,在接收端根據(jù)已經(jīng)收到的信息重構(gòu)丟失的信息可以很好地解決丟包的問題。系統(tǒng)采用UDP/IP方案實(shí)現(xiàn)對UDP數(shù)據(jù)包的傳輸質(zhì)量控制,在UDP數(shù)據(jù)包中添加時(shí)間戳和序列號(hào)等控制信息,實(shí)現(xiàn)網(wǎng)絡(luò)傳輸?shù)目煽啃?。在UDP包中添加控制信息,必然要以犧牲網(wǎng)絡(luò)傳輸效率為代價(jià),造成網(wǎng)絡(luò)延時(shí),甚至造成擁塞和丟包。因此必須考慮擁塞控制和丟包恢復(fù)算法。
【管道通信】
進(jìn)程間通信—管道
一個(gè)大型的應(yīng)用軟件往往需要眾多進(jìn)程協(xié)作,進(jìn)程間通信(IPC)的重要性顯而易見。Linux系統(tǒng)下的進(jìn)程通信機(jī)制基本上是從UNIX平臺(tái)上的進(jìn)程通信機(jī)制移植而來的,主要的進(jìn)程間通信機(jī)制就是管道。所謂管道,是指能夠連接一個(gè)寫進(jìn)程和一個(gè)讀進(jìn)程的、并允許它們以生產(chǎn)者一消費(fèi)者方式進(jìn)行通信的一個(gè)共享文件,又稱為pipe文件。由寫進(jìn)程從管道的寫入端(勻柄1)將數(shù)據(jù)寫入管道,而讀進(jìn)程則從管道的讀出端(句柄0)讀出數(shù)據(jù)。如圖5所示。
【管道的類型】
管道分為無名管道和有名管道兩種。無名管道是一個(gè)臨時(shí)文件,可用于具有父子關(guān)系進(jìn)程間的通信。利用pipe()建立起來的無名文件(無路徑名)。只用該系統(tǒng)調(diào)用所返回的文件描述符來標(biāo)識(shí)該文件,故只有調(diào)用pipe()的進(jìn)程及其子進(jìn)程才能識(shí)別此文件描述符,才能利用該文件(管道)進(jìn)行通信。當(dāng)這些進(jìn)程不再使用此管道時(shí),內(nèi)核收回其索引結(jié)點(diǎn)。有名管道是一個(gè)可以在文件系統(tǒng)中長期存在的、具有路徑名的文件,用于無父子關(guān)系的進(jìn)程之間通信。無父子關(guān)系的進(jìn)程可將信息發(fā)送到某個(gè)命名管道中,并通過管道名讀取信息。用系統(tǒng)調(diào)用mknod()建立。它克服無名管道使用上的局限性,可讓更多的進(jìn)程也能利用管道進(jìn)行通信。因而其它進(jìn)程可以知道它的存在,并能利用路徑名來訪問該文件。對有名管道的訪問方式與訪問其他文件一樣,需先用open()打丌。二種管道的讀寫方式是相同的,本文應(yīng)用的是無名管道通信機(jī)制只講無名管道。
【管道的特點(diǎn)】
(1)管道是半雙工的,數(shù)據(jù)只能單向流動(dòng),需要相互通信時(shí),就要建立兩個(gè)管道。(2)只能用于父子進(jìn)程或者兄弟進(jìn)程之間(具有親緣關(guān)系的進(jìn)程,有名管道則突破了這一限制)。(3)單獨(dú)構(gòu)成一種獨(dú)立的文件系統(tǒng),并且只存在于內(nèi)存中。(4)數(shù)據(jù)的讀出和寫入都是單向的。一個(gè)進(jìn)程向管道中寫入的數(shù)據(jù)被管道另一端的進(jìn)程讀出。寫入的數(shù)據(jù)每次都添加在管道緩沖區(qū)的末尾,并且每次都是從緩沖區(qū)的頭部讀出數(shù)據(jù)。
【數(shù)字IP網(wǎng)絡(luò)廣播系統(tǒng)設(shè)計(jì)思路】
作為網(wǎng)絡(luò)數(shù)字音頻廣播服務(wù)控制中心系統(tǒng),其結(jié)構(gòu)是服務(wù)器/客戶端結(jié)構(gòu)。服務(wù)器端可以打開的文件,通過定時(shí)器不斷發(fā)送信息,同時(shí)可以自己顯示正在發(fā)送和已發(fā)送的信息??蛻舳藙t可以選擇接收和停止接收,同時(shí)播放接收到的內(nèi)容。本設(shè)計(jì)按照系統(tǒng)的具體功能要求,首先應(yīng)用Socket編程創(chuàng)建客戶端和服務(wù)器端,每個(gè)接收端就會(huì)相應(yīng)的創(chuàng)建一個(gè)線程,它們之間通過這個(gè)連接來實(shí)現(xiàn)數(shù)據(jù)通信;然后在發(fā)送端和接收端設(shè)置一個(gè)器,用于發(fā)出的消息。并根據(jù)消息做出不同的動(dòng)作。如圖7中所示的那樣。
音源服務(wù)器的作用為讀取音頻文件或者實(shí)時(shí)采集聲音,按照特定的速率發(fā)送碼流。如果是實(shí)時(shí)采集,則不需要加入時(shí)間信息,如果從文件讀取,則需要根據(jù)合適的時(shí)間信息發(fā)送個(gè)穩(wěn)定的流。
主控服務(wù)器系統(tǒng)的作用為接收音源服務(wù)器的數(shù)據(jù)并存儲(chǔ)音頻數(shù)據(jù),以及通過Socket傳送到客戶端網(wǎng)絡(luò)音頻裝置;接收客戶端的請求之后將音頻數(shù)據(jù)發(fā)到客戶端。
客戶端的作用是向Server端發(fā)起連接請求或者處在聽接收狀態(tài),接收主控服務(wù)器系統(tǒng)發(fā)過來的音頻數(shù)據(jù)并播放之。
音源、主控服務(wù)器,這兩個(gè)模塊的功能也可以由一個(gè)Server來統(tǒng)一完成;而客戶端則要具備網(wǎng)絡(luò)接收接口.能夠?qū)崟r(shí)接收音頻流并播放。
【IP網(wǎng)絡(luò)音頻廣播功能的實(shí)現(xiàn)原理】
(1)用戶在客戶端使用client訪問server,并發(fā)出檢索命令,要求播放特定的MP3文件。
(2)服務(wù)器收到命令后,向后臺(tái)數(shù)據(jù)庫發(fā)出播放請求。
(3)數(shù)據(jù)庫收到請求后,從MP3文件庫中檢索出的MP3,啟動(dòng)并初始化客戶端的播放模塊,把MP3流文件傳送至客戶端。
(4)客戶端播放模塊開始播放MP3流。
【西邦I(lǐng)P網(wǎng)絡(luò)廣播系統(tǒng)客戶端設(shè)計(jì)原理】
客戶端程序的主要功能是接收服務(wù)器端發(fā)來的數(shù)據(jù),并且處理這些數(shù)據(jù),這些數(shù)據(jù)有可能是錯(cuò)誤的,這需要客戶端做出異常處理,然后,向服務(wù)器發(fā)送命令,使服務(wù)器重新發(fā)送或者中斷。
首先,客戶端要初始化網(wǎng)絡(luò)部分,創(chuàng)建一個(gè)套接字,然后利用這個(gè)套接字綁定一個(gè)網(wǎng)絡(luò),然后就是接受數(shù)據(jù)了,讓程序在一個(gè)循環(huán)里等待著數(shù)據(jù)的到來,然后把接收來的數(shù)據(jù)遞給一個(gè)線程,然后在這個(gè)線程里處理,在線程里判斷接收來的數(shù)據(jù),如果是音樂文件,那就創(chuàng)建一個(gè)進(jìn)程,在這個(gè)進(jìn)程里執(zhí)行播放。如果是錯(cuò)誤的就給服務(wù)器發(fā)送錯(cuò)誤報(bào)告。這就是客戶端的程序。
intrecv_channel(intsd,intchannelid,structsockaddr_in*phisaddr,socklen_t*phisaddrlen)
{
intret,len;
structmp3cast_data_st*recvmenu_st;
recvmenu_st=malloc(64*1024);
if(recvmenu_st==NULL){
perror("malloc()failed.");
exit(1);
}
while(1){
len=recvfrom(sd,recvmenu_st,64*1024,0,(void*)phisaddr,phisaddrlen);
if(ret<0){
if(errno==EINTR){
continue;
}
perror("recvfrom()");
exit(1);
}
if(ntohs(recvmenu_st->channel_id)==channelid&&len>0){
ret=upipe_write(cpipe,recvmenu_st->data,len-4);
printf("writeupipe%d\n",ret);
if(ret<0)continue;
}
}
free(recvmenu_st);
return0;
}
6.2服務(wù)器端的程序
服務(wù)器端的程序主要功能是發(fā)送MP3文件,和接受客戶端發(fā)來的請求,
intcreate_socket(void)
{
intsd0;
structip_mreqnmreq;
sd0=socket(PF_INET,SOCK_DGRAM,0);
if(sd<0){
perror("socket()");
return-1;
}
inet_pton(AF_INET,DEFAULT_MGROUP,&mreq.imr_multiaddr);
inet_pton(AF_INET,"0.0.0.0",&mreq.imr_address);
mreq.imr_ifindex=if_nametoindex("eth0");
if(setsockopt(sd0,IPPROTO_IP,IP_MULTICAST_IF,&mreq,sizeof(mreq))<0){
perror("setsockopt(...,IP_MULTICAST_IF,...)");
return-1;
}
hisaddr.sin_family=AF_INET;
hisaddr.sin_port=htons(DEFAULT_PORT);
inet_pton(AF_INET,DEFAULT_MGROUP,&hisaddr.sin_addr);
returnsd0;
}
6.3測試與效果
在電腦上模擬實(shí)驗(yàn)環(huán)境。開兩個(gè)終端,分別運(yùn)行客戶端和服務(wù)器端,客戶端能正常的播放服務(wù)器端的MP3文件。服務(wù)器端會(huì)循環(huán)打印一些信息表示正常運(yùn)行,客戶端會(huì)顯示服務(wù)器端發(fā)來的菜單列表,當(dāng)客戶端選擇某一頻道后客戶端會(huì)把從服務(wù)器端收到的相應(yīng)音頻文件播放回來。
商鋪:http://m.aiynx.com/st51536/
主營產(chǎn)品:公共廣播系統(tǒng),校園廣播系統(tǒng),酒店廣播系統(tǒng),小區(qū)廣播系統(tǒng),工廠廣播系統(tǒng),定時(shí)功放,定壓功放,定時(shí)播放器,有源音柱,藍(lán)牙功放等
智慧城市網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ?
請輸入賬號(hào)
請輸入密碼
請輸驗(yàn)證碼
請輸入你感興趣的產(chǎn)品
請簡單描述您的需求
請選擇省份