UDP广播包的发送问题
来源:互联网 发布:wap淘宝流量来源 编辑:程序博客网 时间:2024/06/11 20:55
在拥有多个设备时,如何得知设备是否存在呢?嵌入式设备发送广播包就是一个可行的方案。UDP广播包,打包buf中信息为设备的信息。然后通过UDP广播到网络中。
话不多说,直接给出广播包的源代码
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <netinet/in.h>#include <sys/select.h>#include <sys/types.h>#include <sys/socket.h>#define MAXLINE 50typedef struct sockaddr SA;int main(int argc, char *argv){int sockfd,ret;struct sockaddr_in targetaddr;char buf_snd[MAXLINE] = "Hello, I am 48!";int broadcast;if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){perror("socket failed!");exit(-1);}broadcast = 1;if((ret = setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast))) < 0){perror("setsockopt failed");exit(-1);}bzero(&targetaddr, sizeof(targetaddr));targetaddr.sin_family = AF_INET;targetaddr.sin_addr.s_addr = htonl(INADDR_BROADCAST);targetaddr.sin_port = htons(8888);while(1){sleep(1);if((ret = sendto(sockfd, buf_snd, sizeof(buf_snd), 0, (SA *)&targetaddr, sizeof(targetaddr))) < 0){perror("sendto failed");exit(-1);}printf("sendto (broadcast) successed\n");}return 0;}
进行arm-linux-gcc交叉编译后,放进开发板运行、发现无法运行?
报了一个网络不存在的错误、用route命令、ifconfig命令看一下网络的状态
广播的功能是有的,但是发现网关的设置却是空的,那么原因就是没有设置网关导致的。
设置网关:
然后再运行
主机端通过wireshark抓包
这样开发板的广播包程序就写好了、
完!
阅读全文
0 0
- UDP广播包的发送问题
- UDP发送广播包
- linux udp广播发送的问题
- java发送udp广播包
- java发送udp广播包
- UDP协议发送、接收广播包 .
- VM虚拟机虚拟网卡对于UDP发送广播包的影响
- UDP发送广播信息
- UDP 发送广播
- udp广播发送数据
- Android发送UDP广播
- 发送UDP广播
- udp 局域网广播发送代码
- 使用UDP发送广播报
- 三种发送UDP包的函数
- C语言socket UDP广播的发送和接收示例
- 多网卡或存在虚拟机的情况,socket广播包发送会出现问题
- 多网卡或存在虚拟机的情况,socket广播包发送会出现问题
- sql条件插入
- 动态规划-3.8流水作业调度
- 文件上传—DiskFileItemFactory核心类
- 快速排列在c++中的使用
- git: Your branch and 'origin/master' have diverged
- UDP广播包的发送问题
- 嵌套路由中子路由中的path
- RBTools Documentation 0.8 alpha 0 (dev) documentation
- 使用django框架搭建web应用
- Xcode常用快捷键与技巧分享
- 最新苹果手机使用iTunes换手机铃声2017
- 关注各种高级语言虚拟机(high-level language virtual machine,HLL VM)的设计与实现,泛化至各种高级语言的运行时的设计与实现,也会涉及动态编译、GC、动态语言的编
- JavaMail实现收发邮件——(一)相关概念概述
- OpenAI gym