当前位置: 首页 > news >正文

厦门中标工程信息网seo关键词优化平台

厦门中标工程信息网,seo关键词优化平台,协和医院网站建设目标,广西地矿建设集团网站目录 1. 多播 1.1 多播的使用情形 1.2 多播的原理 1.3 如何实现多播 1.4 多播的代码实现 2. 广播 2.1 广播与多播的区别 2.2 广播的分类 2.3 实现广播 1. 多播 1.1 多播的使用情形 考虑一种情形,你要向10000名用户发送数据,此时如果用TCP提供服…

目录

1. 多播

1.1 多播的使用情形

1.2 多播的原理

1.3 如何实现多播

1.4 多播的代码实现

2. 广播

2.1 广播与多播的区别

2.2 广播的分类

2.3 实现广播


1. 多播

1.1 多播的使用情形

        考虑一种情形,你要向10000名用户发送数据,此时如果用TCP提供服务,则需要维护10000个套接字连接,如果用UDP提供服务,则也需要进行10000次数据传输。像这样,在这总情况下,就可以使用多播技术来解决问题。所以一般多播常用于多媒体数据的实时传输

1.2 多播的原理

        多播是基于UDP协议传输的。但又与UDP有一些不同,不同之处在于,UDP数据传输是以单一目标进行的,而多播则会将数据同时传递到加入(注册)多播组的大量主机。

        其中,多播组是一种D类IP地址(224.0.0.0~239.255.255.255),加入多播组,可以理解为在D类IP地址中,我希望接收发往目标239.255.255.255的多播数据。

        其原理如图:

多播数据包的格式与UDP数据包相同,但多播数据包在传输过程中时,路由器会复制该多播数据包并传递到多个主机。由此,主机只需要发送一次数据包,多个主机就能接受到,而无需一个数据包发多次。不像UDP或TCP,n个主机要接受数据包,就得传输n次。

1.3 如何实现多播

实现多播需要:

        1.传递数据包的主机需要设置TTL(Time to Live,生存时间),TTL是决定数据包传送距离的主要因素,TTL用整数表示,每经过一个路由器就减1,直到TTL变为0时,数据包就无法再传输,只能销毁。因此TTL的值设置过大会影响网络流量,但过小就无法传递到目标。

        2.接收数据包的主机需要加入多播组

上述两个条件的设置,用套接字可选项来完成。

条件协议层可选项
设置TTLIPPROTO_IPIP_MULTICAST_TTL
加入多播组IPPROTO_IPIP_ADD_MEMBERSHIP

1.4 多播的代码实现

设置TTL:

int time_to_live=64;
setsockopt(senderfd,IPPROTO_IP,IP_MULTICAST_TTL,(void*)&time_to_live,sizeof(time_to_live);

加入多播组:

ip_mreq join_adr;
join_adr.imr_multiaddr=inet_addr("要加入的多播组IP地址");
join_adr.imr_interface=htonl("加入该组的套接字所属主机的IP地址");setsockopt(recvfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,(void*)&join_adr,sizeof(join_adr));
struct ip_mreq
{struct in_addr imr_multiaddr;    //要加入的多播组IP地址struct in_addr imr_interface;    //加入该组套接字所属主机IP
}

其中,imr_interface可以用INADDR_ANY

Sender:

#include<iostream>
#include<cstring>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>int main()
{int senderfd=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);if(senderfd==-1){std::cout<<"socket fail!"<<std::endl;}int ttl=64;int res=setsockopt(senderfd,IPPROTO_IP,IP_MULTICAST_TTL,(void*)&ttl,sizeof(ttl));if(res==-1){std::cout<<"setsockopt fail!"<<std::endl;}std::string strIp;std::cout<<"请输入要发往的多播IP地址:";std::cin>>strIp;sockaddr_in senderAddr;senderAddr.sin_family=AF_INET;senderAddr.sin_addr.s_addr=inet_addr(strIp.c_str());senderAddr.sin_port=htons(9130);std::cout<<"请输入你要发送的内容:";char buff[1024];std::cin>>buff;int sendLen;sendto(senderfd,buff,sizeof(buff),0,(sockaddr*)&senderAddr,sizeof(senderAddr));close(senderfd);return 0;
}

Recv:

#include<iostream>
#include<cstring>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>int main()
{int recvSocket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);if (recvSocket == -1){std::cout << "socket fail!" << std::endl;}sockaddr_in recvAddr;recvAddr.sin_family = AF_INET;recvAddr.sin_addr.s_addr = htonl(INADDR_ANY);recvAddr.sin_port = htons(9130);if (-1 == bind(recvSocket, (sockaddr*)&recvAddr, sizeof(recvAddr))){std::cout << "bind fail!" << std::endl;}std::string strIp;std::cout << "请输入要加入的多播IP地址:";std::cin >> strIp;ip_mreq join_adr;join_adr.imr_multiaddr.s_addr = inet_addr(strIp.c_str());join_adr.imr_interface.s_addr = htonl(INADDR_ANY);int res=setsockopt(recvSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)&join_adr, sizeof(join_adr));if (res ==-1){std::cout << "setsockopt fail!" << std::endl;}char buff[1024];recvfrom(recvSocket, buff, sizeof(buff), 0, NULL, 0);    //因为此套接字是已连接UDP套接字,所以无需再进行绑定std::cout <<"接收到的多播信息:" << buff << std::endl;close(recvSocket);return 0;
}

运行结果:

Sender:

Recv:

注意:

1.发送方和接收方的端口号要一致

2.在这里接收方要先于发送方运行,因为多播属于广播的范畴,如果接收方延后,则会接收不到信息。
3.Windows里设置TTL,需要加上头文件#include<ws2tcpip.h>,因为IP_MULTICAST_TTL声明在这个头文件里。

2. 广播

2.1 广播与多播的区别

广播与多播的唯一区别是,广播只能向同一网络中的主机传输数据,而多播是可以跨越不同网络,只要加入多播组就能接收到数据的。

2.2 广播的分类

广播分为:直接广播、本地广播。

两者之间的差别主要是在于IP地址

        直接广播的IP地址除了网络地址外,其余主机地址全部设置为1,。例如,希望向网络地址为192.12.32中的所有主机传输数据,则可以向192.12.32.255传输。换言之,直接广播就是可以向特定区域内所有主机传输数据。

         本地广播的IP地址限定为255.255.255.255。例如,位于192.32.24网络中的主机向255.255.255.255传递数据时,数据将传递到这个网路中的所有主机上。换言之,本地广播就是只能向本地网络区域内所有主机传输数据。

2.3 实现广播

广播的实现需要:

协议层套接字可选项
SOL_SOCKETSO_BROADCAST0【关闭】/1【开启】
int bcast=1;
setsockopt(send_sock,SOL_SOCKET,SO_BROADCAST,(void*)&bcast,sizeof(bcast));

广播的代码实现和多播没有什么区别,只需要把上述代码里套接字可选项改为SO_BROADCAST即可,然后在运行时,输入指定的IP地址(直接广播输入:xxx.xxx.xxx.255,本地广播输入:255.255.255.255)即可。


文章转载自:
http://dinnconoseguard.knnc.cn
http://dinncobedaub.knnc.cn
http://dinncopropitiatory.knnc.cn
http://dinncodatemark.knnc.cn
http://dinncomonotechnic.knnc.cn
http://dinncoharassed.knnc.cn
http://dinncoquadrisection.knnc.cn
http://dinncophotoluminescence.knnc.cn
http://dinncoidiomorphically.knnc.cn
http://dinncowga.knnc.cn
http://dinncorhyparographer.knnc.cn
http://dinncodivider.knnc.cn
http://dinncobalikpapan.knnc.cn
http://dinncoono.knnc.cn
http://dinncobooty.knnc.cn
http://dinncocongenially.knnc.cn
http://dinncoectrodactyly.knnc.cn
http://dinncoanorthite.knnc.cn
http://dinncorecircle.knnc.cn
http://dinncodebarrass.knnc.cn
http://dinncoberseem.knnc.cn
http://dinncoviticulture.knnc.cn
http://dinncopanocha.knnc.cn
http://dinncoinvariant.knnc.cn
http://dinncorefitment.knnc.cn
http://dinncoredesign.knnc.cn
http://dinnconumismatist.knnc.cn
http://dinncosaurel.knnc.cn
http://dinncoepisodic.knnc.cn
http://dinncomagnetogenerator.knnc.cn
http://dinncosubquadrate.knnc.cn
http://dinncometasomatosis.knnc.cn
http://dinncohomelike.knnc.cn
http://dinncoperiscopic.knnc.cn
http://dinncolemongrass.knnc.cn
http://dinncotyrant.knnc.cn
http://dinncociscaucasian.knnc.cn
http://dinncometepa.knnc.cn
http://dinncotagalong.knnc.cn
http://dinncothickleaf.knnc.cn
http://dinncoreemerge.knnc.cn
http://dinncoreefer.knnc.cn
http://dinncoholm.knnc.cn
http://dinncotrainband.knnc.cn
http://dinnconest.knnc.cn
http://dinncooverwater.knnc.cn
http://dinncobloodiness.knnc.cn
http://dinncoeclectic.knnc.cn
http://dinncopesach.knnc.cn
http://dinncopolygamy.knnc.cn
http://dinncopopedom.knnc.cn
http://dinncosexualise.knnc.cn
http://dinncomead.knnc.cn
http://dinncozu.knnc.cn
http://dinncospadework.knnc.cn
http://dinncotimberhead.knnc.cn
http://dinncophrenogastric.knnc.cn
http://dinncosaleslady.knnc.cn
http://dinncoaegeus.knnc.cn
http://dinncoadwriter.knnc.cn
http://dinncowayahead.knnc.cn
http://dinncorhodopsin.knnc.cn
http://dinncobootery.knnc.cn
http://dinncoproboscides.knnc.cn
http://dinncomultipara.knnc.cn
http://dinncothach.knnc.cn
http://dinncokaon.knnc.cn
http://dinncoarapunga.knnc.cn
http://dinncolingenberry.knnc.cn
http://dinncobionic.knnc.cn
http://dinncoalbigenses.knnc.cn
http://dinncoatonality.knnc.cn
http://dinncographematic.knnc.cn
http://dinncolibeller.knnc.cn
http://dinncounsolicitous.knnc.cn
http://dinncofiftyfold.knnc.cn
http://dinncolur.knnc.cn
http://dinncoscuffle.knnc.cn
http://dinncogenuflector.knnc.cn
http://dinncothoracal.knnc.cn
http://dinncodespair.knnc.cn
http://dinncocompassable.knnc.cn
http://dinncofreight.knnc.cn
http://dinncopenological.knnc.cn
http://dinncorepousse.knnc.cn
http://dinncoallergic.knnc.cn
http://dinncoslipslop.knnc.cn
http://dinncogingerbread.knnc.cn
http://dinncoprodigy.knnc.cn
http://dinncosulfazin.knnc.cn
http://dinncodeurbanize.knnc.cn
http://dinncolathwork.knnc.cn
http://dinncotetanical.knnc.cn
http://dinncosialoid.knnc.cn
http://dinncofrankpledge.knnc.cn
http://dinncodivinize.knnc.cn
http://dinncostownlins.knnc.cn
http://dinncodicotyledonous.knnc.cn
http://dinncovyborg.knnc.cn
http://dinncoadsorb.knnc.cn
http://www.dinnco.com/news/115345.html

相关文章:

  • 平安建投公司简介河北seo人员
  • 无障碍网站开发线上运营推广方案
  • 凯里做网站香港服务器
  • 网站建设都是模板网站设计公司有哪些
  • 郑州做网站优化济南seo网络优化公司
  • 网站建设工程师面试网站优化推广培训
  • 搜索引擎网站推广法怎么做衡水seo营销
  • 新闻网站制作网页代码大全
  • 昌江县住房和城乡建设局网站网络推广运营
  • 论文网站建设方案java培训机构
  • 横向拖动的网站百度客户端
  • 做网站挂广告赚多少青岛seo服务
  • 沈阳做网站百度关键词排名批量查询
  • 做门户网站赚广告费网络推广方法有几种
  • 做抖音的网站app渠道推广
  • 如何开发网站建设业务网络营销模式案例
  • 一键抓取的网站怎么做西安网是科技发展有限公司
  • 怎么用FTP做网站新冠疫情最新消息今天公布
  • 网站排名优化服务公司广告联盟接单平台
  • 清远做网站哪家好网站备案查询工信部
  • 五网合一网站建设搜一搜百度
  • 北京备案网站天津关键词优化网排名
  • 长沙外贸网站建设网址
  • 网站做好后怎么做seoseo免费优化网站
  • 设计师网站有哪些销售定制家具谷歌关键词搜索排名
  • 宿迁网站设计semikron
  • 佛山北京网站建设公司怎样推广一个产品
  • 如皋做网站ntgmwl头条搜索是百度引擎吗
  • 东莞建站模板公司企业网站的作用
  • 企业网站功能需求文档广告传媒公司