千家信息网

vxworks中如何实现BroadCast

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了vxworks中如何实现BroadCast,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有了单播和组播,广播也跑不了
千家信息网最后更新 2025年12月03日vxworks中如何实现BroadCast

这篇文章主要介绍了vxworks中如何实现BroadCast,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

有了单播和组播,广播也跑不了。广播,BroadCast,与单播的区别就是地址不同。广播用的地址是255.255.255.255;而且广播数据不会被路由器转发,限定于局域网内,否则就是网络风暴了

广播的代码其实更简单,直接参考单播/组播的例子写一个

Server是在单播的基础上略加改动

  • 调用socket()打开一个Socket

  • 调用bind()指定Port信息

  • 调用setsockopt()加入广播

  • 调用recvfrom()阻塞接收

  • 最后,调用close()关闭Socket

广播Client更简单了

  • 调用socket()打开一个Socket

  • 指定广播地址和Port信息

  • 调用sendto()发送数据

  • 最后,调用close()关闭Socket

完整代码如下


#include /* pritnf() */#include /* malloc() */#include /* socket() */#include /* struct sockaddr_in */
#define HOST_PORT 60000#define MIN_SIZE 10#define MIN_TIMES 10
void broadServer (int port, int size, int times){ struct sockaddr_in localAddr; struct sockaddr_in peerAddr; int addrSize = sizeof(struct sockaddr); int opt = 1; int fd; int num; char *buffer; if(port <= 2000) port = HOST_PORT; if(size <= 0) size = MIN_SIZE; if(times <= 0) times = MIN_TIMES; printf (">, size, port); /* 打开Socket */ fd = socket (AF_INET, SOCK_DGRAM, 0); /* 指定本地地址信息 */ localAddr.sin_family = AF_INET; localAddr.sin_port = htons (port); localAddr.sin_addr.s_addr = INADDR_ANY; bind (fd, (struct sockaddr *)&localAddr, sizeof(struct sockaddr));
/* 加入广播 */ setsockopt(fd, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(int));
buffer = (char *)malloc (size); while ((times--)>0) { /* 接收广播数据 */ num = recvfrom (fd, buffer, size, 0, (struct sockaddr *)&peerAddr, &addrSize); if (num < 0) break; printf (" broadServer: recv %d chars from %s\n", num, inet_ntoa(peerAddr.sin_addr)); }
/* 关闭Socket */ close (fd); free (buffer); printf (" broadServer: end\n"); }

#include /* pritnf() */#include /* malloc() */#include /* socket() */#include /* struct sockaddr_in */
#define HOST_PORT 60000#define MIN_SIZE 1#define MIN_TIMES 1
void broadClient (int port, int size, int times){ struct sockaddr_in serverAddr; int opt = 1; int fd; char *buffer; int num; if(port <= 2000) port = HOST_PORT; if(size <= 0) size = MIN_SIZE; if(times<= 0) times= MIN_TIMES; buffer = (char *)malloc(size); for(num=0; num
/* 服务器地址信息 */ serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons (port); serverAddr.sin_addr.s_addr = htonl(INADDR_BROADCAST); printf (" broadClient: try to send %d chars %d times to %s:%d\n", size, times, inet_ntoa(serverAddr.sin_addr), port);
/* 打开Socket */ fd = socket (AF_INET, SOCK_DGRAM, 0);
while ((times--)>0) { /* 发送数据到BroadCast Server */ num = sendto(fd, buffer, size, 0, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr)); printf (" broadClient: send %d chars\n", num); }
/* 关闭Socket */ close (fd); free (buffer); printf (" broadClient: send finished\n"); }

运行情况如下如下


感谢你能够认真阅读完这篇文章,希望小编分享的"vxworks中如何实现BroadCast"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

广播 地址 信息 数据 篇文章 代码 就是 参考 不同 价值 例子 兴趣 同时 基础 局域 局域网 情况 是在 更多 朋友 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云服务器租用与服务器托管 我的世界自带商店的服务器 武汉炳睿网络技术有限公司 网络技术支持辅助服务 分离后的数据库在哪里 数据库邮包邮寄管理系统 芜湖飞慧网络技术有限公司征婚 软件开发公司 融资计划 中科大网络安全大赛 海信手机拨打电话显示服务器出错 数据库建表之后怎么自动递增 数据库三种循环语句的区别 访问web服务器上的图片 重启数据库的方式 职高计算机网络技术课本 靖江小型网络技术诚信服务 唯物史观网络技术发展 新余高性价比服务器哪家做的好 软件开发中的需求分析 腾讯客服电话服务器问题 开展网络安全 自查报告 整车软件开发岗 山东商务职业学院网络技术 pc服务器繁忙 儿童一年级网络安全手抄报图片 广州泓泽网络技术有限公司 我的世界服务器在线时间增加指令 大数据量好友功能数据库设计 计算机网络技术中职教学视频 网络安全绝密档案
0