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

建设银行如何设置网站查询密码广州市新闻最新消息

建设银行如何设置网站查询密码,广州市新闻最新消息,影评网站怎么做,hao123网站用什么程序做的写在前面 由于公司业务需要用到组播实现,这里就记录下学习过程。在学习组播之前,我们先来看看另外两种数据包传输方式:单播和广播。 单播:简单来说就是数据一对一发送,如果需要给多个主机发送数据时,就需…

写在前面

由于公司业务需要用到组播实现,这里就记录下学习过程。在学习组播之前,我们先来看看另外两种数据包传输方式:单播和广播

  1. 单播:简单来说就是数据一对一发送,如果需要给多个主机发送数据时,就需要将同一份源数据的多次拷贝,发送给这些主机。无疑加重了源主机以及网络带宽的压力。这种传输方式不利于批量传输数据。
  2. 广播:不需要这些信息的主机也会收到该信息,数据的安全性得不到保证,还会造成同一网段内的信息泛滥,浪费带宽。可以看到,这种传输方式不利于给特定的用户传输数据。

一、什么是组播

组播(Multicast),又称“多播”,是一种数据包传输方式。它以"尽力而为"的形式发送信息到某个目标组,这个目标组称为组播组。

源主机向多个主机发送数据时,源主机只发送一份数据,数据的目的地址是组播组地址。这样,凡是属于该组的成员,都可以接收到一份源主机发送的数据的拷贝,此组播方式下,只有真正信息需要的成员会收到信息,其他主机不会收到。

组播相较于单播和广播的优势:

  1. 相较于单播,被传递的信息只会在距信息源尽可能远的网络节点才开始被复制和分发,用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加
  2. 相较于广播,被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性

小结:当有多台主机同时成为一个数据包的接受者时,出于对带宽和CPU负担的考虑,组播成为了一种最佳选择。

1.1 组播相关术语

  • 组播组:用组播地址标识的一组主机集合
  • 组播源:数据的发送者
  • 组播成员:加入某个组播组的主机
  • 组播路由器:运行组播协议的设备

1.2 组播如何工作

组播通过把224.0.0.0-239.255.255.255的D类地址作为目的地址,有一台源主机发出目的地址是以上范围组播地址的报文,在网络中,如果有其他主机对于这个组的报文有兴趣的,可以申请加入这个组,并可以接受这个组,而其他不是这个组的成员是无法接受到这个组的报文的。
在这里插入图片描述

1.3 组播实现原理

上面说到了组播路由器,这里我们着重看下这个组播路由器的作用。

用户根据IGMP协议发送请求报文,路由器收到IGMP报文后,会把用户加入自己的组播组,组播报文到达路由器时,根据组播组复制多份数据发给组内的所有主机。

注意:IGMP报文并不是发给路由器,它的目的地址只有目标主机,报文从用户到目标主机可能经历多个路由器,用户必须加入这些路由器的组播组,为什么呢?因为只有用户加入了这条路径上所有的路由器的组播组之后,组播源发出的数据,才能在经过层层路由是转发到正确的目标用户。

发送IGMP报文需要知道组播源的IP地址,那用户是如何知道组播源的IP地址的呢?答案是:RP(Rendezvous Point)集中点,具体来说就是,让组播源知道RP的IP地址,让用户知道RP的IP地址。

获取组播源IP地址

在这里插入图片描述

  1. 组播源通过单播的方式把组播 239.0.0.2 封装在一个单播发送给RP(src_ip: 192.168.60.213, dst_ip: 192.168.60.210)
  2. 用户D向RP发送请求加入组播239.0.0.2 的IGMP报文
  3. RP收到请求后,把组播源发送的单播数据复制一份发送给用户D
  4. 用户D收到报文后解析就能拿到组播源的IP地址192.168.60.213
组播实现

在这里插入图片描述

  1. 接收端发送IGMP报文给组播源,经过的所有路由器都会把接受端加入组播组239.0.0.2
  2. 组播源发送数据到组播组 239.0.0.2
  3. 路由器收到数据,具体发给谁由路由器的路由表决定

二、组播代码示例

2.1 server端(组播源)

MulticastServer.h

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <errno.h>
#include <string>#define SERVER_PORT 8000
#define CLIENT_PORT 9000
#define GROUP "239.0.0.2"using namespace std;class MulticastServer{
public:MulticastServer();~MulticastServer();bool Init();void SendMessage(string payloadMessage);private:int m_sockfd;struct sockaddr_in m_serveraddr, m_clientaddr;
};

MulticastServer.cpp

#include "MulticastServer.h"bool MulticastServer::Init()
{m_sockfd = socket(AF_INET, SOCK_DGRAM, 0);                /*构造用于UDP通信的套接字*/bzero(&m_serveraddr, sizeof(m_serveraddr));m_serveraddr.sin_family = AF_INET;                        /* IPv4 */m_serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);         /*本地任意IP INADDR_ANY = 0 */m_serveraddr.sin_port = htons(SERVER_PORT);bind(m_sockfd, (struct sockaddr *)&m_serveraddr, sizeof(m_serveraddr));struct ip_mreqn group;inet_pton(AF_INET, GROUP, &group.imr_multiaddr);        /*设置组播组的地址*/inet_pton(AF_INET, "0.0.0.0", &group.imr_address);      /* 本地任意IP 自动分配有效IP*/group.imr_ifindex = if_nametoindex("enp5s0");             /* 给出网卡名,转换为对应编号:eth0 --> 编号         ,,  命令:ip ad */int ret = setsockopt(m_sockfd, IPPROTO_IP, IP_MULTICAST_IF, &group, sizeof(group));  /*获取组播权限*/if (ret < 0) {printf("Fail to disable multicast loop, err: %s",strerror(errno));return false;}else{printf("disable multicast loop success.\n");}// ret = setsockopt(m_sockfd, IPPROTO_IP , IP_MULTICAST_LOOP, &group, sizeof(group));bzero(&m_clientaddr, sizeof(m_clientaddr));                 /* 构造client 地址 IP+端口号*/m_clientaddr.sin_family = AF_INET;inet_pton(AF_INET, GROUP, &m_clientaddr.sin_addr.s_addr); /* IPv4  239.0.0.2+9000 */m_clientaddr.sin_port = htons(CLIENT_PORT);return true;
}void MulticastServer::SendMessage(string payloadMessage)
{// sprintf(buf, "from 192.168.60.213 server info: multicast %d\n", i++);//fgets(buf, sizeof(buf), stdin);sendto(m_sockfd, (char*)payloadMessage.c_str(), payloadMessage.size(), 0, (struct sockaddr *)&m_clientaddr, sizeof(m_clientaddr));
}

main.c

#include "MulticastServer.h"int main(int argc, char *argv[])
{MultiBroadcastServer server;server.init();int idx = 0;while(true){idx++;std::string msg = "from 192.168.60.213 server info: multicast " + to_string(idx) + "\n";server.SendMessage(msg);sleep(1);}return 0;
}

2.2 client端(接收端)

MulticastClient.h

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <errno.h>
#include <string>#define SERVER_PORT 8000
#define CLIENT_PORT 9000
#define GROUP "239.0.0.2"using namespace std;class MulticastClient{
public:MulticastClient();~MulticastClient();bool Init();void recvMessage(char* buffer, int &len);private:int m_confd;struct sockaddr_in m_clientaddr;
};

MulticastClient.cpp

#include "MulticastClient.h"bool MulticastClient::Init()
{struct ip_mreqn group;                                                  /*组播结构体*/m_confd= socket(AF_INET, SOCK_DGRAM, 0);bzero(&m_clientaddr, sizeof(m_clientaddr));                                   /* 初始化*/m_clientaddr.sin_family = AF_INET;inet_pton(AF_INET, "0.0.0.0" , &m_clientaddr.sin_addr.s_addr);m_clientaddr.sin_port = htons(CLIENT_PORT);bind(m_confd, (struct sockaddr *)&m_clientaddr, sizeof(m_clientaddr));inet_pton(AF_INET, GROUP, &group.imr_multiaddr);                        /* 设置组播组地址*/inet_pton(AF_INET, "0.0.0.0", &group.imr_address);                      /*使用本地任意IP添加到组播组*/group.imr_ifindex = if_nametoindex("enp5s0");                             /* 设置网卡名 编号 ip ad */    setsockopt(m_confd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &group, sizeof(group));/* 将client加入组播组*/return true;
}void MulticastClient::recvMessage(char* buffer, int &len)
{len = recvfrom(m_confd, buffer, sizeof(buffer), 0, NULL, 0);std::cout << "client recv: " << std::string(buffer) <<  " , len : "<<  len << std:endl;
}

main.c

#include "MulticastClient.h"int main(int argc, char *argv[])
{MulticastClient client;client.init();while(true){char buffer[BUFSIZ] = {0};int len = 0;client.recvMessage(buffer, len);}return 0;
}

文章转载自:
http://wanjiaunpleasantness.przc.cn
http://wanjiadisease.przc.cn
http://wanjiarosinous.przc.cn
http://wanjiaflotative.przc.cn
http://wanjiabibliomania.przc.cn
http://wanjiagaltonian.przc.cn
http://wanjiaegg.przc.cn
http://wanjiablackdamp.przc.cn
http://wanjiaantespring.przc.cn
http://wanjiacribellum.przc.cn
http://wanjiasynonymist.przc.cn
http://wanjiapostliminium.przc.cn
http://wanjiactenophoran.przc.cn
http://wanjiaintimation.przc.cn
http://wanjiagalvanotaxis.przc.cn
http://wanjiaklatch.przc.cn
http://wanjiaupstand.przc.cn
http://wanjiastiletto.przc.cn
http://wanjiadecolourant.przc.cn
http://wanjiamatman.przc.cn
http://wanjiapule.przc.cn
http://wanjiaantidote.przc.cn
http://wanjiaantiquarian.przc.cn
http://wanjiacarbamoyl.przc.cn
http://wanjiadiscommon.przc.cn
http://wanjiaglassily.przc.cn
http://wanjiasarcenet.przc.cn
http://wanjiaomicron.przc.cn
http://wanjiafluorinate.przc.cn
http://wanjiachaldron.przc.cn
http://wanjiagriffith.przc.cn
http://wanjiasuccessfully.przc.cn
http://wanjiamisogynist.przc.cn
http://wanjiaconduction.przc.cn
http://wanjiaaster.przc.cn
http://wanjiasecco.przc.cn
http://wanjiafroggy.przc.cn
http://wanjiaensue.przc.cn
http://wanjiailliterati.przc.cn
http://wanjianoonflower.przc.cn
http://wanjialegong.przc.cn
http://wanjiaminicab.przc.cn
http://wanjiafiscal.przc.cn
http://wanjiacosmopolitical.przc.cn
http://wanjiaindissolubility.przc.cn
http://wanjiaparagenesia.przc.cn
http://wanjiademagogue.przc.cn
http://wanjiagibbet.przc.cn
http://wanjiacommunard.przc.cn
http://wanjiaethnocracy.przc.cn
http://wanjiacete.przc.cn
http://wanjiawheen.przc.cn
http://wanjiapat.przc.cn
http://wanjiatrichomycin.przc.cn
http://wanjiasyndrome.przc.cn
http://wanjiaamphitrichous.przc.cn
http://wanjiazoneless.przc.cn
http://wanjiaoncogenic.przc.cn
http://wanjiavly.przc.cn
http://wanjiaattractive.przc.cn
http://wanjiacontent.przc.cn
http://wanjiasad.przc.cn
http://wanjiakastelorrizon.przc.cn
http://wanjiaimpersonalism.przc.cn
http://wanjiabifer.przc.cn
http://wanjiapharmacotherapy.przc.cn
http://wanjialovely.przc.cn
http://wanjiareferential.przc.cn
http://wanjiainculcate.przc.cn
http://wanjiaekalead.przc.cn
http://wanjiafatigable.przc.cn
http://wanjiatypes.przc.cn
http://wanjiaframed.przc.cn
http://wanjiaossein.przc.cn
http://wanjiashearwater.przc.cn
http://wanjiaczarevna.przc.cn
http://wanjianacs.przc.cn
http://wanjiajet.przc.cn
http://wanjiachebec.przc.cn
http://wanjiapatiently.przc.cn
http://www.15wanjia.com/news/116438.html

相关文章:

  • b2b的网站有哪些(10个)seo怎么推广
  • 网站seo工作内容实时热榜
  • 湖州 网站建设公司中国万网域名注册
  • 贵阳网页设计培训班百度关键词优化排名技巧
  • 网站开发专业公司有哪些百度竞价推广有哪些优势
  • 德阳建设局官方网站整站优化服务
  • 阿里巴巴b2b平台简介seo营销方案
  • 网站建设 招聘需求关键词优化课程
  • 珠海免费网站建设近三年成功的营销案例
  • 建筑公司做网站的好处如何做好百度推广
  • app定制网站开发四川省人民政府
  • 哪里有网站可以做动态视频倒计时免费关键词搜索工具
  • 机票酒店网站建设如何营销推广自己的产品
  • 西安城乡建设委员会的网站活动推广软文范例
  • 泷澄建设集团网站策划书模板
  • 电脑外设网站建设论文什么平台免费推广效果最好
  • asp网站开发参考文献网站模板免费
  • 房地产最新消息政策代表了什么金融网站推广圳seo公司
  • 找人做网站!!! 网站定制开发百度seo查询
  • 四川省住房和城乡建设厅网站不见了百度竞价开户渠道
  • 怎样在百度做网站表白新的营销模式有哪些
  • 网站建设项目设计书推广类软文案例
  • net动态网站开发免费seo提交工具
  • 网站建设实训日记国际军事形势最新消息
  • 为什么网站有不同的扩展名网站维护
  • 山东建设工会网站如何分析百度指数
  • 天津专业做网站的公司百度风云榜游戏
  • 邯郸网站建设选哪家推广产品的软文
  • 就业服务网站建设方案百度最新秒收录方法2021
  • 定制软件开发公司seo推广关键词公司