vxworks中如何实现BroadCast
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要介绍了vxworks中如何实现BroadCast,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有了单播和组播,广播也跑不了
千家信息网最后更新 2025年02月03日vxworks中如何实现BroadCast有了单播和组播,广播也跑不了。广播,BroadCast,与单播的区别就是地址不同。广播用的地址是255.255.255.255;而且广播数据不会被路由器转发,限定于局域网内,否则就是网络风暴了
这篇文章主要介绍了vxworks中如何实现BroadCast,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
广播的代码其实更简单,直接参考单播/组播的例子写一个
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安全错误
数据库的锁怎样保障安全
泰州创新网络技术来电咨询
报业网络安全标准
优房网络技术有限公司
dns 服务器 转发器
佛山员工服务管理软件开发
魔门塔科技是互联网公司吗
gbk编码数据库位数
小学生网络安全
网络安全主要的问题包括哪些
黄山软件开发
网络安全画初中
高一网络安全措施
杰克股份有限公司软件开发
汕尾电脑监控网络技术员
服务器该怎么加模组
医院网络安全测试
云服务器端软件开发
到底怎样建立数据库啊
网络安全主题班会心得感受
生成对抗网络技术
老达未来网络技术
h2 内存数据库
数据库xml加密连不上
检查多个数据库连接
矿机处理网络安全
基因组数据库
贵州专业软件开发品质保障
数据库如何查班级最高分
鹏橙网络技术
2019天津网络安全周开幕式