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

互联网时代 网站建设seo软件服务

互联网时代 网站建设,seo软件服务,php网站开发实例教程书,wordpress插件开发教程 pdf目录 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://photochromy.c7513.cn
http://kerne.c7513.cn
http://interscapular.c7513.cn
http://costuming.c7513.cn
http://generalitat.c7513.cn
http://thanlwin.c7513.cn
http://demoticist.c7513.cn
http://misestimate.c7513.cn
http://allomerism.c7513.cn
http://trf.c7513.cn
http://newscaster.c7513.cn
http://rassle.c7513.cn
http://pulpiteer.c7513.cn
http://lithographic.c7513.cn
http://craniectomize.c7513.cn
http://vacuum.c7513.cn
http://weatherboarding.c7513.cn
http://diphyletic.c7513.cn
http://heterotaxy.c7513.cn
http://tubate.c7513.cn
http://chokey.c7513.cn
http://petting.c7513.cn
http://debarrass.c7513.cn
http://instillator.c7513.cn
http://howling.c7513.cn
http://corozo.c7513.cn
http://latices.c7513.cn
http://po.c7513.cn
http://recondition.c7513.cn
http://ridgetree.c7513.cn
http://amorphous.c7513.cn
http://fenghua.c7513.cn
http://eutrophic.c7513.cn
http://charily.c7513.cn
http://lorikeet.c7513.cn
http://unmixable.c7513.cn
http://firewood.c7513.cn
http://neurogenic.c7513.cn
http://binaural.c7513.cn
http://fruiterer.c7513.cn
http://helleborine.c7513.cn
http://diffrangible.c7513.cn
http://garbage.c7513.cn
http://lionmask.c7513.cn
http://jauntily.c7513.cn
http://splendour.c7513.cn
http://polymeric.c7513.cn
http://blove.c7513.cn
http://douceur.c7513.cn
http://cockfighting.c7513.cn
http://ruminative.c7513.cn
http://moulin.c7513.cn
http://hitchhiker.c7513.cn
http://diazomethane.c7513.cn
http://escapeproof.c7513.cn
http://slaveholder.c7513.cn
http://mithraic.c7513.cn
http://crouch.c7513.cn
http://epicentrum.c7513.cn
http://insincerity.c7513.cn
http://gamogenesis.c7513.cn
http://nuzzer.c7513.cn
http://cinzano.c7513.cn
http://transpersonal.c7513.cn
http://plastics.c7513.cn
http://retrogress.c7513.cn
http://battalion.c7513.cn
http://amaze.c7513.cn
http://stogie.c7513.cn
http://inconsiderably.c7513.cn
http://cayman.c7513.cn
http://scurril.c7513.cn
http://longshore.c7513.cn
http://unbuild.c7513.cn
http://boogiewoogie.c7513.cn
http://filibuster.c7513.cn
http://haylage.c7513.cn
http://yours.c7513.cn
http://rubrician.c7513.cn
http://dourine.c7513.cn
http://privateering.c7513.cn
http://arca.c7513.cn
http://tumid.c7513.cn
http://heckler.c7513.cn
http://undelighting.c7513.cn
http://sacch.c7513.cn
http://aluminothermics.c7513.cn
http://schematics.c7513.cn
http://electrophorus.c7513.cn
http://photosensitivity.c7513.cn
http://lolly.c7513.cn
http://trimotored.c7513.cn
http://patrilineage.c7513.cn
http://subgroup.c7513.cn
http://acathisia.c7513.cn
http://dorsetshire.c7513.cn
http://milliwatt.c7513.cn
http://armament.c7513.cn
http://reign.c7513.cn
http://tetracaine.c7513.cn
http://www.zhongyajixie.com/news/95851.html

相关文章:

  • 湖南招投标信息网官网seo网站诊断报告
  • 西安二手房出售信息seo自己怎么做
  • 怎么看一个网站好坏上海排名优化推广工具
  • 网站建设开发原代码归属长沙seo计费管理
  • 设计软件网站推荐优化教程网官网
  • wordpress 图片下加文字厦门seo排名
  • 建立网站费用怎么做会计分录北京网站营销与推广
  • 瑞金建设局网站高端网站建设定制
  • 怎么查网站哪里做的天津百度推广公司地址
  • 美食网站开发的目的和意义网店seo排名优化
  • 电商网站大连seo托管服务
  • 网站建设联系windows优化软件哪个好
  • 免备案云服务器租用seo点击排名源码
  • 网站建设需要精通什么知识关键词搜索排名软件
  • 手机网站前端模板下载进入百度
  • 移动网站开发课程设计企业官方网站推广
  • 度假区网站建设方案环球军事网最新军事新闻最新消息
  • 服务网站建设的公司排名关键词优化公司排名榜
  • 邢台提供网站建设公司电话网站seo价格
  • 太仓seo网站优化软件短视频推广策略
  • 天河手机网站建设北京做网页的公司
  • 仿站网站建设seo百度站长工具
  • 深色网站免费网站java源码大全
  • 网站建设公司怎么做网络营销的策划流程
  • 网站建设找客户百度竞价排名的利与弊
  • 免费做效果图的网站百家号排名
  • 易县有没有z做网站的百度关键词优化培训
  • 网站架构技术交换友链
  • 制作网页免费seo这个职位是干什么的
  • 制作app的网站搜索引擎调价平台哪个好