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

建站模板哪个好要建设一个网站需要什么

建站模板哪个好,要建设一个网站需要什么,免费空间的个人网站,dw网页设计软件的学习网站网络通信#xff1a;单播、广播、组播 本文目录#xff1a; 一、网络通信的分类、他们的定义和特点。 二、单播、广播、组播的传输信息的网络拓扑模型。 三、单播、广播、组播的编程实例。 一、网络通信的分类、他们的定义和特点。 二、单播、广播、组播的传输信息的网络…                                                                                                  网络通信单播、广播、组播 本文目录 一、网络通信的分类、他们的定义和特点。 二、单播、广播、组播的传输信息的网络拓扑模型。 三、单播、广播、组播的编程实例。 一、网络通信的分类、他们的定义和特点。 二、单播、广播、组播的传输信息的网络拓扑模型。 一单播 如图8-1 所示网络中存在信息发送者SourceUserA 和UserC 提出信息需求网络采用单播方式传输信息。 单播传输特点归纳如下 * Source 向每个Receiver 地址发送一份独立的拷贝信息packets for UserApackets for UserC。 * 网络为每个Receiver 分别建立一条独立的数据传送通路Source→ RouterB → RouterE → RouterD → UserASource → RouterB → RouterE → RouterF → UserC。 单播方式下网络中传输的信息量和需求该信息的用户量成正比当需求该信息的用户量较大时网络中将出现多份相同信息流。此时带宽成为保证网络传输质量的重要瓶颈。 单播方式较适合用户稀少的网络不利于信息规模化发送。 二广播 如图8-2 所示网络中存在信息发送者SourceUserA 和UserC 提出信息需求网络采用广播方式传输信息。                              广播传输特点归纳如下 * Source 向本网络广播地址发送且仅发送一份报文packets for all the network。 * 网络将报文拷贝传送到所有网段不管是否需要保证信息到达网络中所有的路由器和用户UserB 也同样接收到一份拷贝。 广播方式下网络中所有用户都能接收到该信息当网络中需求该信息的用户量很小时网络资源利用率将非常低带宽浪费严重。不需要这些信息的用户也会受到影响。 广播方式较适合用户稠密的网络信息安全性和有偿服务得不到保障。  三多播 如图8-3 所示网络中存在信息发送者Source、UserA 和UserC 提出信息需求网络采用组播方式传输信息。 组播传输特点归纳如下 * Multicast group 称为组播组使用一个IP 组播地址标识。UserA 和UserC 两个信息接收者加入该组播组从而可以接收发往该组播组的数据。 * Source 称为组播源向该组播组地址发送且仅发送一份报文packets for the multicast group。网络传输过程中相同的组播数据流在每一条链路上最多仅有一份。相比单播来说使用组播方式传递信息用户的增加不会显著增加网络的负载。 * 根据组播组成员的分布情况组播路由协议为多目的端的数据包转送建立树型路由。报文在尽可能远的分叉路口如RouterE才开始复制和分发最终传送到组播组成员。相比广播来说组播数据仅被传输到有接收者的地方不会造成网络资源的浪费。 * 网络中支持组播功能的路由器称为“组播路由器”不仅提供组播路由功能还能够在与网络用户连接的末梢网段上提供组成员管理功能如RouterD 和RouterF。同时自己本身也可能是组播组成员。 * 组播组中的成员是动态的网络中的用户主机可以在任何时刻加入和离开组播组。组成员可能广泛分布在网络中的任何地方。组播源通常不会同时是其发送数据的接收者即不属于其对应的目的组播组。 * 一个源可以同时向多个组播组发送数据多个源可以同时向一个组播组发送报文。 * 为了帮助理解可以类比收看某电视频道的节目。 * 组播组是发送者和接收者之间的一个约定如同电视频道。 * 电视台是组播源它向某频道内发送数据。 * 电视机是接收者主机观众打开电视机选择收看某频道的节目表示主机加入某组播组然后电视机播放该频道电视节目表示主机接收到发送给这个组的数据。 * 观众可以随时控制电视机的开关和频道间的切换表示主机动态的加入或退出某组播组。 三、单播、广播、组播的编程实例。 1单播实例(一个echo服务器可以同时和多个用户通信) head.h span stylefont-size:12px;#ifndef _HEAD_H_ #define _HEAD_H_#includestdio.h #includestring.h #includestrings.h #includestdlib.h #includesys/types.h #includesys/socket.h #includearpa/inet.h #includenetinet/in.h #includeerror.h #includeerrno.h #includeunistd.h //fork #includesys/wait.h#define SER_PORT 50004 #define SER_IP 192.168.192.128 #define CLIENT_PORT 50000 #define CLIENT_IP 192.168.192.128#define BUFF_SIZE 100 #define SIZE 20typedef struct _USER {char name[SIZE];char passwd[SIZE]; }usr; #define sys_err(_msg) error(EXIT_FAILURE,errno,_msg) /*errno是个全局变量调用之后可以在发生错误的情况下也能输出——msg信息 *作为调试用 * */ #endif /span server.c span stylefont-size:12px;#include head.h int socket_init() {int sockfd;struct sockaddr_in sockaddr;if((( sockfdsocket(AF_INET,SOCK_STREAM,0))-1))sys_err(socket);bzero(sockaddr,sizeof(sockaddr));sockaddr.sin_familyAF_INET;sockaddr.sin_porthtons(SER_PORT);sockaddr.sin_addr.s_addrinet_addr(127.0.0.1);printf(%d\n,sockfd);if((bind(sockfd,(struct sockaddr*)sockaddr,sizeof(sockaddr)))-1)sys_err(bind);listen(sockfd,5); //要懂得监听的作用其实就是建立一个缓冲队列让创建的队列最多可以允许五个套接字进入return sockfd; }int do_echo(int connectfd) {char sbuf[BUFF_SIZE];char rbuf[BUFF_SIZE];int n;printf(int the server \n);while(1){printf(in the do_echo\n);bzero(rbuf,BUFF_SIZE);if((nrecv(connectfd,rbuf,BUFF_SIZE,0))-1)sys_err(recv);if(n0) //如果接受为0代表客户端已经断线返回-1return -1;printf(server:rbuf%s\n,rbuf);sprintf(sbuf,%s %s,rbuf,---------echo);send(connectfd,sbuf,strlen(sbuf),0);}return ; } int main(int argc,const char * argv[]) {//步骤/**1 创建套接字socket();*2 与IP地址绑定bind();*3监听 listen();*4如果有链接接受链接进行三次握手accept();*5与客户端进行数据的传输read(),send();*6关闭套接字close(sockfd);* *注意要掌握熟练掌握各个接口的调用* 为了实现多客户端和服务器的交互该怎么做* */int sockfd;//具有基本属性的套接字描述符int connectfd;//进行三次握手之后的套接字描述符sockfdsocket_init();//listen(sockfd,5); //要懂得监听的作用其实就是建立一个缓冲队列让创建的将要//连接的套接字描述符进队和出队 /**** The accept() system call is used with connection-based socket types* (SOCK_STREAM, SOCK_SEQPACKET). It extracts the first connection request on the* queue of pending connections for the listening socket, sockfd, creates a new*** */pid_t pid;signal(SIGCHLD,SIG_IGN);while(1){connectfdaccept(sockfd,NULL,NULL); //一个服务器可以和多个客户端进程多次握手连接。 切记connect函数在UDP协议中也可以用不是TCP的专用if(connectfd -1)sys_err(accept);if(-1(pidfork())){perror(fork);}else if(pid0){printf(do_echo%d\n, do_echo(connectfd));close(connectfd); //将子进程从父进程复制到的套接字资源关闭了close(sockfd);}} close(connectfd);//父进程关闭自己的套接字close(sockfd);return 0;}/spanspan stylefont-size:14px; /span 2广播实例 sender.c  : span stylefont-size:14px;#includehead.h int main(int argc,const char * argv[]) {int sockfd;struct sockaddr_in sockaddr;char rbuf[BUFF_SIZE];if(-1(sockfdsocket(AF_INET,SOCK_DGRAM,0))) //由于TCP只支持一对一通信UDP可以一对一一对多多对一多对多。由于这个广播。是多对多。所以只能是SOCK_DGRAM perror(socket);bzero(sockaddr,sizeof(sockaddr));sockaddr.sin_familyAF_INET;sockaddr.sin_porthtons(BRAOD_PORT); //#define BRAOD_PORT 50001sockaddr.sin_addr.s_addrinet_addr(BRAOD_IP);//#define BRAOD_IP 192.168.1.255if(-1bind(sockfd,(struct sockaddr *)sockaddr,sizeof(sockaddr)))perror(bind);while(1){bzero(rbuf,sizeof(rbuf));recvfrom(sockfd,rbuf,BUFF_SIZE,0,(struct sockaddr*)sockaddr,sizeof(sockaddr));printf(--------%s-------\n,rbuf);}close(sockfd);return 0; }/span 3组播实例 sender.c : span stylefont-size:14px;#includehead.h int main(int argc ,const char * argv[]) {/**创建组播发送方的步骤*创建套接字*设置组播地址可选*发送数据*关闭套接字* */int sockfd;struct sockaddr_in multiaddr;char sbuf[BUFF_SIZE]hello,xiaowang....\n;int n;if(-1(sockfdsocket(AF_INET,SOCK_DGRAM,0)))perror(socket);bzero(multiaddr,sizeof(multiaddr));multiaddr.sin_familyAF_INET;multiaddr.sin_porthtons(MULTI_PORT); //#define MULTI_PORT 50002 只要是用户自定义端口即可multiaddr.sin_addr.s_addrinet_addr(MULTI_IP);/span span stylefont-size:14px; //#define MULTI_IP 224.4.4.4 D类地址是组播地址224.0.0.1---239.255.255.254while(1){sleep(1);if(-1(nsendto(sockfd,sbuf,strlen(sbuf),0,(struct sockaddr*)multiaddr,sizeof(multiaddr))))perror(sendto);printf(in the sending..........\n);} return 0; }/span recevier.c : span stylefont-size:14px;#includehead.h int main(int argc,const char * argv[]) {int sockfd;int n;char rbuf[BUFF_SIZE];struct sockaddr_in groupaddr;//创建套接字if(-1(sockfdsocket(AF_INET,SOCK_DGRAM,0)))perror(socket);//加入组播struct ip_mreqn multiaddr; //这些在Man 2 setsockopt 时在signal的有关描述中可以查到的multiaddr.imr_multiaddr.s_addrinet_addr(MULTI_IP);multiaddr.imr_address.s_addrinet_addr(LOCAL_IP);multiaddr.imr_ifindex0;//设置套接字允许发送组播信息的属性if(-1setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,multiaddr,sizeof(multiaddr)))perror(setsockopt);//绑定组播地址bzero(groupaddr,sizeof(groupaddr));groupaddr.sin_familyAF_INET;groupaddr.sin_porthtons(MULTI_PORT);groupaddr.sin_addr.s_addrinet_addr(MULTI_IP);bind(sockfd,(struct sockaddr*)groupaddr,sizeof(groupaddr));int t;while(1){// bzero(rbuf,sizeof(rbuf));tsizeof(groupaddr);if(-1(nrecvfrom(sockfd,rbuf,BUFF_SIZE,0,(struct sockaddr*)groupaddr,t)))perror(recvfrom);sleep(1); printf(%s-----------\n,rbuf);}return 0; } /span 参考文献http://www.xici.net/d79537500.htm 未经允许禁止转载
http://www.hkea.cn/news/14272275/

相关文章:

  • 天辰建设网站公司网址制作网站
  • 构建网站的步骤自媒体人15种赚钱方法
  • 台州建设规划局网站logo制作app
  • 网站的备案编号中国室内设计协会官网
  • 易语言做电影网站源码个人微博网站设计
  • 微信公众号的网站超链接怎么做哪里有做网站排名优化
  • 制作网站专业公司吗网站动态图怎么做
  • 小说网站怎么建设的台州椒江区建设局网站
  • asp网站建设公司永久免费的网站软件
  • 全面的郑州网站建设网站推广的一般流程是
  • 网页设计html代码成品图片沧州网站推广优化
  • 用自己的电脑做网站服务器如何快速开发手机app
  • 做淘宝联盟网站用数据库吗知乎有趣的网站
  • 用脚手架如何搭建项目做网站中国房地产网站
  • 江西港航建设投资有限公司网站加强服务保障满足群众急需ruu7
  • 做热处理工艺的网站有哪些虫虫 wordpress 群发
  • 网站推广的目的建一个交易网站需要多少钱
  • 播放视频网站怎么做湛江做网站的公司
  • 自己制作网站的方法广州建设档案馆网站
  • 顺德公益网站制作注册网站给谁交钱
  • 网站建设域名怎么选择品牌宣传网站制作
  • 网站建设试题tooopen素材公社
  • 沈阳高端网站定制如何学习网站开发
  • wordpress后台登陆空白广州百度seo排名
  • 做视频的素材怎么下载网站网站建设收费标准平台
  • 做门图网站学前端好找工作吗
  • 做网站大图片网站建设规划
  • 百度收录网站排名简单网站制作成品
  • 楼市南京做凶宅的网站富阳设计网站
  • dede手机网站模板哦手机程序编程