秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

第10章 廣播與多播編程 (2)

上傳人:hs****5 文檔編號(hào):253388139 上傳時(shí)間:2024-12-12 格式:PPT 頁數(shù):20 大小:166.01KB
收藏 版權(quán)申訴 舉報(bào) 下載
第10章 廣播與多播編程 (2)_第1頁
第1頁 / 共20頁
第10章 廣播與多播編程 (2)_第2頁
第2頁 / 共20頁
第10章 廣播與多播編程 (2)_第3頁
第3頁 / 共20頁

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《第10章 廣播與多播編程 (2)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第10章 廣播與多播編程 (2)(20頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,第10章,廣播與多播編程,廣播,一個(gè),IP,地址由網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)組成。所有主機(jī)號(hào)部分為全,1,的,IP,地址是廣播地址。,發(fā)送應(yīng)用進(jìn)程,UDP,IPv4,數(shù)據(jù)鏈路,UDP,IPv4,數(shù)據(jù)鏈路,數(shù)據(jù)鏈路,IPv4,UDP,接收應(yīng)用進(jìn)程,以太網(wǎng),頭部,IPv4,頭部,UDP,頭部,UDP,數(shù)據(jù),子網(wǎng)128.7.6,目的以太網(wǎng),=,ff:ff:ff:ff:ff:ff,幀類型,=0800,目的,IP=128.7.6.255,協(xié)議,=UDP,目的端口,=520,Sendto,目的,IP=128.7.6.255,目的端

2、口,=520,丟棄,協(xié)議,=UDP,幀類型,0800,128.7.6.99=,單播,128.7.6.255=,廣播,128.7.6.5=,單播,128.7.6.255=,廣播,協(xié)議,=UDP,端口,=520,廣播的實(shí)現(xiàn),應(yīng)用程序只能通過,UDP,方式發(fā)送廣播。,一般情況下,如果調(diào)用,sendto,,只能向非廣播地址發(fā)送數(shù)據(jù)報(bào)。如果要發(fā)送廣播數(shù)據(jù)報(bào),必須告訴內(nèi)核,可以通過設(shè)置,SO_BROADCAST,套接口選項(xiàng)來做到這一點(diǎn)。,int,on=1;,setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int,);,廣播實(shí)例,服務(wù)端為,tserv

3、.c,,運(yùn)行時(shí)需指定廣播地址和端口號(hào),運(yùn)行后每,3,秒發(fā)送一次廣播,將本機(jī)時(shí)間通知本子網(wǎng)內(nèi)所有主機(jī)。,服務(wù)器端程序,tserv.c,#include,#include,#include,#include,#define BUFLEN 255,void,getcurtime(char,*,curtime,),time_t,tm;,time(&tm,);,snprintf(curtime,BUFLEN,%sn,ctime(&tm,);,int,main(int,argc,char,*,argv,),struct,sockaddr_in,peeraddr,;,int,sockfd,on,=1;,in

4、t,num,i,;,char msgBUFLEN+1;,if(argc,!=3),printf(usage:%s,n,argv0);,exit(0);,sockfd,=socket(AF_INET,SOCK_DGRAM,0);,if(sockfd,0),fprintf(stderr,socket,creating error in,,);,exit(1);,setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int,);,memset(&peeraddr,0,sizeof(struct,sockaddr_in,);,peeraddr.sin

5、_family,=AF_INET;,if(inet_pton(AF_INET,argv1,&peeraddr.sin_addr)=0),printf(Wrong,dest,IP addressn);,exit(0);,peeraddr.sin_port,=htons(atoi(argv2);,for(;),getcurtime(msg,);,int,a;,a=sendto(sockfd,msg,strlen(msg),0,(struct,sockaddr,*)&,peeraddr,sizeof(struct,sockaddr_in,);,printf(%d,a,);,fflush(stdout

6、,);,sleep(3);,客戶端程序,tcli.c,(,只需偵聽某一固定端口的數(shù)據(jù)報(bào),接收一個(gè)數(shù)據(jù)報(bào)就返回。,),#include,#include,#include,#include,#define BUFLEN 255,int,main(int,argc,char,*,argv,),struct,sockaddr_in,localaddr,;,int,sockfd,n,;,char msgBUFLEN+1;,if(argc,!=2),printf(usage:%s,n,argv0);,exit(0);,sockfd,=socket(AF_INET,SOCK_DGRAM,0);,if(so

7、ckfd,0),fprintf(stderr,socket,creating error in,,);,exit(1);,memset(&localaddr,0,sizeof(struct,sockaddr_in,);,localaddr.sin_port,=htons(atoi(argv1);,localaddr.sin_addr.s_addr,=,htonl(INADDR_ANY,);,int,opt=SO_REUSEADDR;,setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt,);,if(bind(sockfd,(stru

8、ct,sockaddr,*)&,localaddr,sizeof(struct,sockaddr_in,)0),fprintf(stderr,bind,error in,,);,exit(2);,n=,read(sockfd,msg,BUFLEN,);,if(n,=-1),fprintf(stderr,read,error in,,);,exit(3);,else,msgn,=0;,printf(%s,msg,);,程序運(yùn)行結(jié)果,如果在服務(wù)器端輸入,./,serv,222.18.113.171 1234,則兩個(gè)客戶不會(huì)同時(shí)收到數(shù)據(jù)報(bào)。,多播,多播是,通過,D,類地址進(jìn)行的,,D,類地址的前,4

9、,位為,1110,,后面,28,位為群播的組標(biāo)識(shí)。,地址范圍,224.0.0.0,到,239.255.255.255,特殊的,IPv4,多播地址:,224.0.0.0,保留,224.0.0.1,本子網(wǎng)上所有主機(jī),224.0.0.2,本子網(wǎng)上所有網(wǎng)關(guān),224.0.1.1 NTP(,網(wǎng)絡(luò)時(shí)間協(xié)議,),組,多播的,原理,當(dāng)一個(gè)多播分組到達(dá)一個(gè)以太網(wǎng)時(shí),形成幀后它的,MAC,地址為,01:00:5e:xx:xx:xx,,其后,23,位由多播組標(biāo)識(shí)的后,23,位映射而成。例如目的地址為,224.0.1.1,的多播分組,在以太網(wǎng)上幀的,MAC,地址就為,01:00:5e:00:01:01,,如下圖示。,1

10、1100000,00000000,00000001,00000001,00000001,00000000,01011110,00000000,00000001,00000001,IP,地址,MAC,地址,由于多播,IP,地址中組標(biāo)識(shí)有,28,位,而映射到,MAC,地址的只有,23,位,還差,5,位,所以有,32,個(gè)組將映射成相同的,MAC,地址,例如,224.0.0.1,,,225.0.1.1,239.128.1.1,都映射到,MAC,地址,01:00:5e:00:01:01,。因此要由,IP,層來檢驗(yàn)到達(dá)的多播分組是否是自已所加入的多播組。如果不是,則拋棄該分組。,應(yīng)用程序,UDP,IP,層

11、,132.0.0.100,數(shù)據(jù)鏈路層,52:37:4a:6d:7f:5e,應(yīng)用程序,UDP,IP,層,132.0.0.129,應(yīng)用程序,UDP,IP,層,132.0.0.168,數(shù)據(jù)鏈路層,52:23:4e:6f:2c:35,數(shù)據(jù)鏈路層,00:2e:2c:5f:ae:3f,發(fā)送數(shù)據(jù)報(bào),IP:224.0.1.1,端口,1234,通過,ARP,解析,224.0.1.1,對(duì)應(yīng),01:00:5e:00:01:01,接收數(shù)據(jù)報(bào),端口,1234,應(yīng)用程序指定,132.0.0.129,加入多播組,224.0.1.1,IP,層指示接收,MAC,地址為,01:00:5e:00:01:01,的幀,加入,225.0

12、.1.1,丟棄,多播數(shù)據(jù)報(bào)在子網(wǎng)中的發(fā)送接收,多播,的,實(shí)現(xiàn),應(yīng)用程序只需向多播組地址發(fā)送數(shù)據(jù)報(bào),接收應(yīng)用程序加入這個(gè)多播組。在指定端口上進(jìn)行偵聽。,加入多播組的方法是設(shè)置套接口選項(xiàng),IP_ADD_MEMBERSHIP.,它要用要如下結(jié)構(gòu):,Struct,ip_mreq,struct,in_addr,imr_multiaddr,;/*IPv4,的,D,類多播地址*,/,Struct,in_addr,imr_interface,;/*,本地接口,IPv4,地址*,/,;,例:,setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mcaddr,sizeo

13、f(struct,ip_mreq,),多播的實(shí)現(xiàn),服務(wù)器端程序沒有什么改變,只要將設(shè)置,socket,選項(xiàng),SO_BROADCAST,的那行去掉就可以了。,客戶程序源碼如下頁:,源程序,mtcli.c,#include,#include,#include,#include,#define BUFLEN 255,int,main(int,argc,char,*,argv,),struct,sockaddr_in,localaddr,;,int,sockfd,n,;,struct,ip_mreq,mcaddr,;,char msgBUFLEN+1;,if(argc,3),printf(usage:

14、%s,n,argv0);,exit(0);,sockfd,=socket(AF_INET,SOCK_DGRAM,0);,if(sockfd,0),fprintf(stderr,socket,creating error in,,);,exit(1);,memset(&localaddr,0,sizeof(struct,sockaddr_in,);,localaddr.sin_port,=htons(atoi(argv2);,localaddr.sin_addr.s_addr,=,htonl(INADDR_ANY,);,if(inet_pton(AF_INET,222.18.113.171,&,

15、mcaddr.imr_interface,)=0),perror(failure,);,exit(0);,if(inet_pton(AF_INET,argv1,&,mcaddr.imr_multiaddr,)=0),printf(Wrong,multicast IP addressn);,exit(0);,printf(ip:%s,inet_ntoa(mcaddr.imr_multiaddr,);,fflush(stdout,);,if(,setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mcaddr,sizeof(struct,ip_mreq,)

16、,0),perror(setsockopt,error in,mtcli.c,join,multicast failedn);,exit(4);,if(bind(sockfd,(struct,sockaddr,*)&,localaddr,sizeof(struct,sockaddr_in,)0),fprintf(stderr,bind,error in,,);,exit(2);,n=,read(sockfd,msg,BUFLEN,);,if(n,=-1),fprintf(stderr,read,error in,,);,exit(3);,else,msgn,=0;,printf(%s,msg,);,程序運(yùn)行結(jié)果,向多播組,224.0.4.5,發(fā)送數(shù)據(jù)報(bào),加入,224.0.4.5,并在,1234,端口偵聽,思考:客戶收到數(shù)據(jù)報(bào)的源地址是多少?,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!