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

营销型网站模板下载产品推广图片

营销型网站模板下载,产品推广图片,东莞常平有什么好玩的,如何做内网站的宣传栏目录 1 广播 1.1 什么是广播? 1.2 广播地址 1.3 广播的实现 2 组播 2.1 分类的IP地址 2.2 多播 IP 地址 2.3 组播的实现 1 广播 1.1 什么是广播? 数据包发送方式只有一个接受方,称为单播 如果同时发给局域网中的所有主机&#xff0…

目录

1 广播

1.1 什么是广播?

1.2 广播地址

1.3 广播的实现

2 组播

2.1 分类的IP地址

2.2 多播 IP 地址

2.3 组播的实现


1 广播

1.1 什么是广播?

数据包发送方式只有一个接受方,称为单播

如果同时发给局域网中的所有主机,称为广播

只有用户数据报(使用UDP协议)套接字才能广播

1.2 广播地址

  • 一个网络内主机号全为1的IP地址为广播地址
  • 发到该地址的数据包被所有的主机接收
  • 255.255.255.255在所有网段中都代表广播地址

1.3 广播的实现

广播的实现

sender.c

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <strings.h>
#include <string.h>#define ErrExit(msg) do {perror(msg); exit(EXIT_FAILURE);} while(0)
typedef struct sockaddr Addr;
typedef struct sockaddr_in Addr_in;int main(int argc, char *argv[])
{int fd = -1;Addr_in peeraddr;socklen_t peerlen = sizeof(peeraddr);char buf[BUFSIZ] = {};/*参数检查*/if(argc < 3){fprintf(stderr, "%s<multiaddr><port>", argv[0]);exit(EXIT_FAILURE);}/*创建套接字*/if( (fd = socket(AF_INET, SOCK_DGRAM, 0) ) < 0)ErrExit("socket");/*允许广播*/int on = 1;setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));/*设置通信结构体*/peeraddr.sin_family = AF_INET;peeraddr.sin_port = htons(atoi(argv[2]));if(!inet_aton(argv[1], &peeraddr.sin_addr) ){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}while(1){fgets(buf, BUFSIZ, stdin);sendto(fd, buf, strlen(buf)+1, 0, (Addr *)&peeraddr, peerlen);}return 0;
}

 receiver.c

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <strings.h>#define ErrExit(msg) do {perror(msg); exit(EXIT_FAILURE);} while(0)
typedef struct sockaddr Addr;
typedef struct sockaddr_in Addr_in;int main(int argc, char *argv[])
{int fd = -1;Addr_in myaddr, peeraddr;socklen_t peerlen = sizeof(peeraddr);char buf[BUFSIZ] = {};/*参数检查*/if(argc < 3){fprintf(stderr, "%s<addr><port>", argv[0]);exit(EXIT_FAILURE);}/*创建套接字*/if( (fd = socket(AF_INET, SOCK_DGRAM, 0) ) < 0)ErrExit("socket");/*设置通信结构体*/myaddr.sin_family = AF_INET;myaddr.sin_port = htons(atoi(argv[2]));if(!inet_aton(argv[1], &myaddr.sin_addr) ){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}/*绑定通信结构体*/if( bind(fd, (Addr *)&myaddr, sizeof(Addr_in)) )ErrExit("bind");while(1){recvfrom(fd, buf, BUFSIZ, 0, (Addr *)&peeraddr, &peerlen);printf("[%s:%d]%s\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port), buf);}return 0;
}

2 组播

2.1 分类的IP地址

2.2 多播 IP 地址

  • 在 IP 多播数据报的目的地址需要写入多播组的标识符。
  • 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。地址范围:224.0.0.0 ~ 239.255.255.255
  • 每一个 D 类地址标志一个多播组。
  • 多播地址只能用于目的地址,不能用于源地址。

2.3 组播的实现

  • 创建用户数据报套接字
  • 加入多播组
  • 绑定组播IP地址和端口
  • 等待接收数据
struct ip_mreqn {struct in_addr imr_multiaddr;  /*IP 组播组地址*/struct in_addr imr_address;   /*本地接口的IP地址*/int                   imr_ifindex;   /*本地网卡的编号*/
}
if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0){
perror("setsockopt");
exit(0);
}

sender.c

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <strings.h>
#include <string.h>#define ErrExit(msg) do {perror(msg); exit(EXIT_FAILURE);} while(0)
typedef struct sockaddr Addr;
typedef struct sockaddr_in Addr_in;int main(int argc, char *argv[])
{int fd = -1;Addr_in peeraddr;socklen_t peerlen = sizeof(peeraddr);char buf[BUFSIZ] = {};/*参数检查*/if(argc < 3){fprintf(stderr, "%s<multiaddr><port>", argv[0]);exit(EXIT_FAILURE);}/*创建套接字*/if( (fd = socket(AF_INET, SOCK_DGRAM, 0) ) < 0)ErrExit("socket");/*设置通信结构体*/peeraddr.sin_family = AF_INET;peeraddr.sin_port = htons(atoi(argv[2]));if(!inet_aton(argv[1], &peeraddr.sin_addr) ){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}while(1){fgets(buf, BUFSIZ, stdin);sendto(fd, buf, strlen(buf)+1, 0, (Addr *)&peeraddr, peerlen);}return 0;
}

receiver.c

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <strings.h>#define ErrExit(msg) do {perror(msg); exit(EXIT_FAILURE);} while(0)
typedef struct sockaddr Addr;
typedef struct sockaddr_in Addr_in;int main(int argc, char *argv[])
{int fd = -1;Addr_in myaddr, peeraddr;socklen_t peerlen = sizeof(peeraddr);struct ip_mreqn mreq;char buf[BUFSIZ] = {};/*参数检查*/if(argc < 3){fprintf(stderr, "%s<addr><port>", argv[0]);exit(EXIT_FAILURE);}/*创建套接字*/if( (fd = socket(AF_INET, SOCK_DGRAM, 0) ) < 0)ErrExit("socket");/*加入多播组*/bzero(&mreq, sizeof(mreq) );if(!inet_aton(argv[1], &mreq.imr_multiaddr) ){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0){perror("setsockopt");exit(0);}/*设置通信结构体*/myaddr.sin_family = AF_INET;myaddr.sin_port = htons(atoi(argv[2]));if(!inet_aton(argv[1], &myaddr.sin_addr) ){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}/*绑定通信结构体*/if( bind(fd, (Addr *)&myaddr, sizeof(Addr_in)) )ErrExit("bind");while(1){recvfrom(fd, buf, BUFSIZ, 0, (Addr *)&peeraddr, &peerlen);printf("[%s:%d]%s\n", inet_ntoa(peeraddr.sin_addr), ntohs(peeraddr.sin_port), buf);}return 0;
}

http://www.ds6.com.cn/news/45862.html

相关文章:

  • 财务公司网站开发源码百度关键词优化软件如何
  • 街区网站建设东莞seo外包平台
  • 做查询网站有哪些谷歌搜索引擎google
  • 做网站千篇一律襄阳百度开户
  • 网站二级域名 权重 卢松松seo网络推广到底是做什么的
  • 如何提高网站收录美食软文300范例
  • 网站建设与实践心得百度收录链接
  • 网站建设最流行语言seo优化实训总结
  • 视频类网站开发经验济南网站优化公司哪家好
  • 小学学校网站模板免费下载百度搜索量
  • 做网站专题页的字大小是多少钱域名批量查询系统
  • 银川网站建设一条龙久久seo正规吗
  • 做网站人才seochinaz查询
  • 代理记账包含哪些业务做网站seo怎么赚钱
  • 上街做网站seo研究
  • 做seo网站要多少钱seo到底是什么
  • 做网站云服务期推广放单平台
  • 淄博网站建设有实力徐州seo
  • 厦门医院网站建设seo百度关键词排名
  • 国外网站购物热门关键词排名查询
  • 四川掌上电力app下载seo关键词排名优化推荐
  • 个人网站网页设计关键词搜索数据
  • 政府网站建设工作方案写一篇推广商品的软文
  • 家庭办厂3一8万项目seo关键词排名优化矩阵系统
  • 广州网站建设平台天津百度seo
  • 能盈利的网站百度seo点击
  • 壶关网站建设电子商务营销
  • 有什么网站做的比较高大上东莞疫情最新通告
  • 广东网站建设微信商城运营定制建站网站建设
  • 网站内容栏由什么构成百度业务推广