欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于IP層通信的多播技術(shù)研究與介紹

電子設(shè)計(jì) ? 來源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-05-03 10:00 ? 次閱讀

在局域網(wǎng)中,管理員常常需要將某條信息發(fā)送給一組用戶。如果使用一對(duì)一的發(fā)送方法,雖然是可行的,但是過于麻煩,也常會(huì)出現(xiàn)漏發(fā)、錯(cuò)發(fā)。為了更有效的解決這種組通信問題,出現(xiàn)了一種多播技術(shù)(也常稱為組播通信),它是基于IP層的通信技術(shù)。

眾所周知,普通IP通信是在一個(gè)發(fā)送者和一個(gè)接收者之間進(jìn)行的,我們常把它稱為點(diǎn)對(duì)點(diǎn)的通信,但對(duì)于有些應(yīng)用,這種點(diǎn)對(duì)點(diǎn)的通信模式不能有效地滿足實(shí)際應(yīng)用的需求。例如:一個(gè)數(shù)字電話會(huì)議系統(tǒng)由多個(gè)會(huì)場(chǎng)組成,當(dāng)在其中一個(gè)會(huì)場(chǎng)的參會(huì)人發(fā)言時(shí),要求其它會(huì)場(chǎng)都能即時(shí)的得到此發(fā)言的內(nèi)容,這是一個(gè)典型的一對(duì)多的通信應(yīng)用,通常把這種一對(duì)多的通信稱為多播通信。采用多播通信技術(shù),不僅可以實(shí)現(xiàn)一個(gè)發(fā)送者和多個(gè)接收者之間進(jìn)行通信的功能,而且可以有效減輕網(wǎng)絡(luò)通信的負(fù)擔(dān),避免資源的無謂浪費(fèi)。

廣播也是一種實(shí)現(xiàn)一對(duì)多數(shù)據(jù)通信的模式,但廣播與多播在實(shí)現(xiàn)方式上有所不同。廣播是將數(shù)據(jù)從一個(gè)工作站發(fā)出,局域網(wǎng)內(nèi)的其他所有工作站都能收到它。這一特征適用于無連接協(xié)議,因?yàn)長(zhǎng)AN上的所有機(jī)器都可獲得并處理廣播消息。使用廣播消息的不利之處是每臺(tái)機(jī)器都必須對(duì)該消息進(jìn)行處理。多播通信則不同,數(shù)據(jù)從一個(gè)工作站發(fā)出后,如果在其它LAN上的機(jī)器上面運(yùn)行的進(jìn)程表示對(duì)這些數(shù)據(jù)“有興趣”,多播數(shù)據(jù)才會(huì)制給它們。

本實(shí)例由Sender和Receiver兩個(gè)程序組成,Sender用戶從控制臺(tái)上輸入多播發(fā)送數(shù)據(jù),Receiver端都要求加入同一個(gè)多播組,完成接收Sender發(fā)送的多播數(shù)據(jù)。

一、實(shí)現(xiàn)方法

1、 協(xié)議支持

并不是所有的協(xié)議都支持多播通信,對(duì)Win32平臺(tái)而言,僅兩種可從WiNSock內(nèi)訪問的協(xié)議(IP/ATM)才提供了對(duì)多播通信的支持。因通常通信應(yīng)用都建立在TCP/IP協(xié)議之上的,所以本文只針對(duì)IP協(xié)議來探討多播通信技術(shù)。

支持多播通信的平臺(tái)包括Windows CE 2.1、Windows 95、Windows 98、Windows NT 4、Windows 2000和WindowsXP。自2.1版開始,Windows CE才開始實(shí)現(xiàn)對(duì)IP多播的支持。本文實(shí)例建立在WindowsXP專業(yè)版平臺(tái)上。

2、多播地址

IP采用D類地址來支持多播。每個(gè)D類地址代表一組主機(jī)。共有28位可用來標(biāo)識(shí)小組。所以可以同時(shí)有多達(dá)25億個(gè)小組。當(dāng)一個(gè)進(jìn)程向一個(gè)D類地址發(fā)送分組時(shí),會(huì)盡最大的努力將它送給小組的所有成員,但不能保證全部送到。有些成員可能收不到這個(gè)分組。舉個(gè)例子來說,假定五個(gè)節(jié)點(diǎn)都想通過I P多播,實(shí)現(xiàn)彼此間的通信,它們便可加入同一個(gè)組地址。全部加入之后,由一個(gè)節(jié)點(diǎn)發(fā)出的任何數(shù)據(jù)均會(huì)一模一樣地復(fù)制一份,發(fā)給組內(nèi)的每個(gè)成員,甚至包括始發(fā)數(shù)據(jù)的那個(gè)節(jié)點(diǎn)。D類I P地址范圍在244.0.0.0到239.255.255.255之間。它分為兩類:永久地址和臨時(shí)地址。永久地址是為特殊用途而保留的。比如,244.0.0.0根本沒有使用(也不能使用),244.0.0.1代表子網(wǎng)內(nèi)的所有系統(tǒng)(主機(jī)),而244.0.0.2代表子網(wǎng)內(nèi)的所有路由器。在RFC 1700文件中,提供了所有保留地址的一個(gè)詳細(xì)清單。該文件是為特殊用途保留的所有資源的一個(gè)列表,大家可以找來作為參考?!癐nternet分配數(shù)字專家組”(I A N A)負(fù)責(zé)著這個(gè)列表的維護(hù)。在表1中,我們總結(jié)了目前標(biāo)定為“保留”的一些地址。臨時(shí)組地址在使用前必須先創(chuàng)建,一個(gè)進(jìn)程可以要求其主機(jī)加入特定的組,它也能要求其主機(jī)脫離該組。當(dāng)主機(jī)上的最后一個(gè)進(jìn)程脫離某個(gè)組后,該組地址就不再在這臺(tái)主機(jī)中出現(xiàn)。每個(gè)主機(jī)都要記錄它的進(jìn)程當(dāng)前屬于哪個(gè)組。

表1 部分永久地址說明

地 址 說 明

基于IP層通信的多播技術(shù)研究與介紹

3、 多播路由器

多播由特殊的多播路由器來實(shí)現(xiàn),多播路由器同時(shí)也可以是普通路由器。各個(gè)多播路由器每分鐘發(fā)送一個(gè)硬件多播信息給子網(wǎng)上的主機(jī)(目的地址為244.0.0.1),要求它們報(bào)告其進(jìn)程當(dāng)前所屬的是哪一組,各主機(jī)將它感興趣的D類地址返回。這些詢問和響應(yīng)分組使用IGMP(Internet group management protocol),它大致類似于ICMP。它只有兩種分組:詢問和響應(yīng),都有一個(gè)簡(jiǎn)單的固定格式,其中有效載荷字段的第一個(gè)字段是一些控制信息,第二字段是一個(gè)D類地址,在RFC1112中有詳細(xì)說明。

多播路由器的選擇是通過生成樹實(shí)現(xiàn)的,每個(gè)多播路由器采用修改過的距離矢量協(xié)議和其鄰居交換信息,以便向每個(gè)路由器為每一組構(gòu)造一個(gè)覆蓋所有組員的生成樹。在修剪生成樹及刪除無關(guān)路由器和網(wǎng)絡(luò)時(shí),用到了很多優(yōu)化方法。

4.庫(kù)支持

WinSock提供了實(shí)現(xiàn)多播通信的API函數(shù)調(diào)用。針對(duì)IP多播,WinSock提供了兩種不同的實(shí)現(xiàn)方法,具體取決于使用的是哪個(gè)版本的WinSock。第一種方法是WinSock1提供的,要求通過套接字選項(xiàng)來加入一個(gè)組;另一種方法是WinSock2提供的,它是引入一個(gè)新函數(shù),專門負(fù)責(zé)多播組的加入,這個(gè)函數(shù)便是WSAJoinLeaf,它是基層協(xié)議是無關(guān)的。本文將通過一個(gè)多播通信的實(shí)例的實(shí)現(xiàn)過程,來講敘多播實(shí)現(xiàn)的主要步驟。因?yàn)閃indow98以后版本都安裝了Winsock2.0以上版本,所以本文實(shí)例在WinSock2.0平臺(tái)上開發(fā)的,但在其中對(duì)WinSock1實(shí)現(xiàn)不同的地方加以說明。

二、編程步驟

1、啟動(dòng)Visual C++6.0,創(chuàng)建一個(gè)控制臺(tái)項(xiàng)目工程MultiCase。在此項(xiàng)目工程中添加Sender和Receiver兩個(gè)項(xiàng)目。

Receiver項(xiàng)目實(shí)現(xiàn)步驟:

(1)、創(chuàng)建一個(gè)SOCK_DGRAM類型的Socket。

(2)、將此Socket綁定到本地的一個(gè)端口上,為了接收服務(wù)器端發(fā)送的多播數(shù)據(jù)。

(3)、加入多播組。

①、 WinSock2中引入一個(gè)WSAJoinLeaf,此函數(shù)原型如下:

SOCKET WSAJoinLeaf( SOCKET s, cONst struct sockaddr FAR *name, int namelen,

LPWSABUF lpCallerData, LPWSABUF lpCalleeData, LPQOS lpSQOS, LPQOS lpGQOS, DWORD dwFlags );

其中,第一個(gè)參數(shù)s代表一個(gè)套接字句柄,是自WSASocket返回的。傳遞進(jìn)來的這個(gè)套接

字必須使用恰當(dāng)?shù)亩嗖?biāo)志進(jìn)行創(chuàng)建;否則的話WSAJoinLeaf就會(huì)失敗,并返回錯(cuò)誤WSAEINVAL。第二個(gè)參數(shù)是SOCKADDR(套接字地址)結(jié)構(gòu),具體內(nèi)容由當(dāng)前采用的協(xié)議決定,對(duì)于IP協(xié)議來說,這個(gè)地址指定的是主機(jī)打算加入的那個(gè)多播組。第三個(gè)參數(shù)namelen(名字長(zhǎng)度)是用于指定name參數(shù)的長(zhǎng)度,以字節(jié)為單位。第四個(gè)參數(shù)lpCallerData(呼叫者數(shù)據(jù))的作用是在會(huì)話建立之后,將一個(gè)數(shù)據(jù)緩沖區(qū)傳輸給自己通信的對(duì)方。第五個(gè)參數(shù)lpCalleeData(被叫者數(shù)據(jù))用于初始化一個(gè)緩沖區(qū),在會(huì)話建好之后,接收來自對(duì)方的數(shù)據(jù)。注意在當(dāng)前的Windows平臺(tái)上,lpCallerData和lpCalleeData這兩個(gè)參數(shù)并未真正實(shí)現(xiàn),所以均應(yīng)設(shè)為NULL。LpSQOS和lpGQOS這兩個(gè)參數(shù)是有關(guān)Qos(服務(wù)質(zhì)量)的設(shè)置,通常也設(shè)為NULL,有關(guān)Qos內(nèi)容請(qǐng)參閱MSDN或有關(guān)書籍。最后一個(gè)參數(shù)dwFlags指出該主機(jī)是發(fā)送數(shù)據(jù)、接收數(shù)據(jù)或收發(fā)兼并。該參數(shù)可選值分別是:JL_SENDER_ONLY、JL_RECEIVER_ONLY或者JL_BOTH。

②、在WinSock1平臺(tái)上加入多播組需要調(diào)用setsockopt函數(shù),同時(shí)設(shè)置IP_ADD_MEMBERSHIP選項(xiàng),指定想加入的那個(gè)組的地址結(jié)構(gòu)。具體實(shí)現(xiàn)代碼將在下面代碼注釋列出。

(4)、接收多播數(shù)據(jù)。

Sender實(shí)現(xiàn)步驟:

(1)、創(chuàng)建一個(gè)SOCK_DGRAM類型的Socket。

(2)、加入多播組。

(3)、發(fā)送多播數(shù)據(jù)。

3、編譯兩個(gè)項(xiàng)目,在局域網(wǎng)中按如下步驟測(cè)試:

(1)、將Sender.exe拷貝到發(fā)送多播數(shù)據(jù)的PC上。

(2)、將Receiver.exe拷貝到多個(gè)要求接收多播數(shù)據(jù)的PC上。

(3)、各自運(yùn)行相應(yīng)的程序。

(4)、在Sender PC上輸入多播數(shù)據(jù)后,你就可以在Receiver PC上看到輸入的多播數(shù)據(jù)。

//////////////////////////////Receiver.c程序代碼

#include

#include

#include

#include

#define MCASTADDR “233.0.0.1” //本例使用的多播組地址。

#define MCASTPORT 5150 //綁定的本地端口號(hào)。

#define BUFSIZE 1024 //接收數(shù)據(jù)緩沖大小。

int main( int argc,char ** argv)

{

WSADATA wsd;

struct sockaddr_in local,remote,from;

SOCKET sock,sockM;

TCHAR recvbuf[BUFSIZE];

/*struct ip_mreq mcast; // Winsock1.0 */

int len = sizeof( struct sockaddr_in);

int ret;

//初始化WinSock2.2

if( WSAStartup( MAKEWORD(2,2),&wsd) != 0 )

{

printf(“WSAStartup() failed\n”);

return -1;

}

/*

創(chuàng)建一個(gè)SOCK_DGRAM類型的SOCKET

其中,WSA_FLAG_MULTIPOINT_C_LEAF表示IP多播在控制面層上屬于“無根”類型;

WSA_FLAG_MULTIPOINT_D_LEAF表示IP多播在數(shù)據(jù)面層上屬于“無根”,有關(guān)控制面層和

數(shù)據(jù)面層有關(guān)概念請(qǐng)參閱MSDN說明。

*/

if((sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,

WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF|

WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)

{

printf(“socket failed with:%d\n”,WSAGetLastError());

WSACleanup();

return -1;

}

//將sock綁定到本機(jī)某端口上。

local.sin_family = AF_INET;

local.sin_port = htons(MCASTPORT);

local.sin_addr.s_addr = INADDR_ANY;

if( bind(sock,(struct sockaddr*)&local,sizeof(local)) == SOCKET_ERROR )

{

printf( “bind failed with:%d \n”,WSAGetLastError());

closesocket(sock);

WSACleanup();

return -1;

}

//加入多播組

remote.sin_family = AF_INET;

remote.sin_port = htons(MCASTPORT);

remote.sin_addr.s_addr = inet_addr( MCASTADDR );

/* Winsock1.0 */

/*

mcast.imr_multiaddr.s_addr = inet_addr(MCASTADDR);

mcast.imr_interface.s_addr = INADDR_ANY;

if( setsockopt(sockM,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char*)&mcast,sizeof(mcast)) == SOCKET_ERROR)

{

printf(“setsockopt(IP_ADD_MEMBERSHIP) failed:%d\n”,WSAGetLastError());

closesocket(sockM);

WSACleanup();

return -1;

}

*/

/* Winsock2.0*/

if(( sockM = WSAJoinLeaf(sock,(SOCKADDR*)&remote,sizeof(remote),NULL,NULL,NULL,NULL, JL_BOTH)) == INVALID_SOCKET)

{

printf(“WSAJoinLeaf() failed:%d\n”,WSAGetLastError());

closesocket(sock);

WSACleanup();

return -1;

}

//接收多播數(shù)據(jù),當(dāng)接收到的數(shù)據(jù)為“QUIT”時(shí)退出。

while(1)

{

if(( ret = recvfrom(sock,recvbuf,BUFSIZE,0,(struct sockaddr*)&from,&len)) == SOCKET_ERROR)

{

printf(“recvfrom failed with:%d\n”,WSAGetLastError());

closesocket(sockM);

closesocket(sock);

WSACleanup();

return -1;

}

if( strcmp(recvbuf,“QUIT”) == 0 ) break;

else {

recvbuf[ret] = ‘\0’;

printf(“RECV:‘ %s ’ FROM

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6081

    瀏覽量

    136493
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1723

    瀏覽量

    150034
  • 局域網(wǎng)
    +關(guān)注

    關(guān)注

    5

    文章

    761

    瀏覽量

    46415
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)系統(tǒng)串行口設(shè)計(jì)技術(shù)研究

    單片機(jī)系統(tǒng)串行口設(shè)計(jì)技術(shù)研究
    發(fā)表于 08-07 00:10

    基于ZigBee的短距離通信技術(shù)研究

    基于ZigBee的短距離通信技術(shù)研究歡迎研究ZigBee的朋友和我交流。。。
    發(fā)表于 08-11 18:55

    怎么實(shí)現(xiàn)嵌入式WiFi技術(shù)研究通信設(shè)計(jì)?

    怎么實(shí)現(xiàn)嵌入式WiFi技術(shù)研究通信設(shè)計(jì)?
    發(fā)表于 05-28 07:01

    EPA功能塊及用戶技術(shù)研究

    EPA功能塊及用戶技術(shù)研究 Research on EPA Functional Block and User Layer Technology
    發(fā)表于 03-17 09:14 ?16次下載

    混合型P2P應(yīng)用模型

    針對(duì)傳統(tǒng)應(yīng)用模型中存在的不足,提出一種基于P2P 技術(shù)的混合型應(yīng)用
    發(fā)表于 03-20 14:56 ?24次下載

    基于IP技術(shù)的視頻傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    隨著壓縮視頻通信技術(shù)和網(wǎng)絡(luò)技術(shù)迅速發(fā)展,基于組技術(shù)的視頻傳輸和服務(wù)應(yīng)用日益廣泛。在IP 網(wǎng)上構(gòu)
    發(fā)表于 07-06 16:59 ?21次下載

    一個(gè)基于應(yīng)用的單源組協(xié)議設(shè)計(jì)

    由于IP在實(shí)現(xiàn)過程中遭遇了很多困難,所以應(yīng)用就成了Internet應(yīng)用研究的熱點(diǎn)。本文在簡(jiǎn)單地論述了應(yīng)用
    發(fā)表于 07-22 17:33 ?23次下載

    ,是什么意思

    ,是什么意思 是一種在因特網(wǎng)或內(nèi)部網(wǎng)上向選定的人群傳輸文本、音頻和視頻的有效
    發(fā)表于 04-06 17:20 ?5996次閱讀

    IP技術(shù)在雷達(dá)信息交互中的應(yīng)用

    對(duì)網(wǎng)絡(luò)通信中的TCP單播、廣播和IP技術(shù)進(jìn)行對(duì)比分析,針對(duì)雷達(dá)終端內(nèi)部數(shù)據(jù)交換實(shí)時(shí)性要求高等特點(diǎn),指出
    發(fā)表于 09-09 10:24 ?32次下載
    <b class='flag-5'>IP</b><b class='flag-5'>多</b><b class='flag-5'>播</b><b class='flag-5'>技術(shù)</b>在雷達(dá)信息交互中的應(yīng)用

    基于IP視頻系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    本文著重介紹了流媒技術(shù)及其底層傳輸技術(shù)——IP?;谛@網(wǎng)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)可供網(wǎng)絡(luò)現(xiàn)場(chǎng)直播、
    發(fā)表于 09-14 11:42 ?1776次閱讀
    基于<b class='flag-5'>IP</b><b class='flag-5'>多</b><b class='flag-5'>播</b>視頻系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    IP介紹

    TCP-IP詳解卷2 IP,學(xué)習(xí)TCP很好的資料。歡迎下載。
    發(fā)表于 05-09 14:33 ?0次下載

    異構(gòu)網(wǎng)絡(luò)協(xié)作通信技術(shù)研究

    異構(gòu)網(wǎng)絡(luò)協(xié)作通信技術(shù)研究_滕世海
    發(fā)表于 01-07 21:39 ?0次下載

    網(wǎng)絡(luò)路由與通信技術(shù)研究與設(shè)計(jì)

    通信這種兼顧了廣播通信與單播通信兩者優(yōu)點(diǎn)的通信模式,已經(jīng)被越來越多地應(yīng)用于平面網(wǎng)絡(luò)業(yè)務(wù)之中。
    發(fā)表于 11-16 15:28 ?3次下載

    人體通信技術(shù)研究

    人體通信技術(shù)研究說明。
    發(fā)表于 03-24 14:13 ?22次下載
    人體<b class='flag-5'>通信</b><b class='flag-5'>技術(shù)研究</b>

    通信的核心技術(shù)IP地址管理

    在現(xiàn)代網(wǎng)絡(luò)通信中,IP地址是每個(gè)設(shè)備在網(wǎng)絡(luò)中的唯.一標(biāo)識(shí),而通信(Multicast)則是一種高效的數(shù)據(jù)傳輸方式。本文將詳細(xì)解析
    的頭像 發(fā)表于 07-15 16:45 ?536次閱讀