UDP广播发送失败:linux 2.6.30上的“网络无法访问”
发布时间:2020-12-13 19:19:56 所属栏目:Linux 来源:网络整理
导读:我使用udp broadcast.Code段编写程序如下: struct sockaddr_in broadcast_addr;socklen_t sock_len=sizeof(broadcast_addr);bzero(broadcast_addr,sock_len);broadcast_addr.sin_family=AF_INET;broadcast_addr.sin_port=12345;broadcast_addr.sin_addr.s_a
我使用udp broadcast.Code段编写程序如下:
struct sockaddr_in broadcast_addr; socklen_t sock_len=sizeof(broadcast_addr); bzero(&broadcast_addr,sock_len); broadcast_addr.sin_family=AF_INET; broadcast_addr.sin_port=12345; broadcast_addr.sin_addr.s_addr=inet_addr("255.255.255.255"); int fd=socket(AF_INET,SOCK_DGRAM,0); int broadcast_enable=1; setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&broadcast_enable,sizeof(broadcast_enable)); uint8_t send_buf[100]; int ret=sendto(fd,send_buf,sizeof(send_buf),(struct sockaddr*)&broadcast_addr,sock_len); if(ret==-1) perror("sendto failed"); 输出: sendto failed: Network is unreachable 但是当我运行“添加默认网关”命令如“route add default gw 1??0.10.10.111”时,错误消失.当将新的ipaddress设置为netdev时,应该运行上面的命令,否则会出现错误.为什么?谢谢. 解决方法
不确定为什么255.255.255.255不适合你.但是,我自己从未将其用作广播IP.当我发送广播数据包时,我通常从子网掩码中获取广播IP,即如果您的子网掩码是255.255.255.0(/ 24)并且说您的IP是192.168.0.5,那么要发送UDP广播,您的目标IP应该是192.168.0.255.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 锁定 – 在Linux内核抢占spin_lock和mutex_lock
- jenkins提交SVN文件
- ubuntu下解决apache2: Could not reliably determine the s
- linux – x86平台中的KVM影子页表处理
- linux – 如何配置D-Bus和SSH X-Forwarding以防止SSH在退出
- redhat – 将CentOS 5.x升级到CentOS 6.x – 提示和技巧
- linux – 用于查找SSH服务器守护程序和Nginx的正常运行时间
- linux – Bash:为什么当脚本陷阱SIGINT时,父脚本不会在SIG
- linux – google-cloud-sdk安装在CentOS /usr/local/bin中找
- LINUX实战:VMware中网络设置之Bridged模式图解