我用udp广播写了一个程序。代码段如下:
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),0,
(struct sockaddr*)&broadcast_addr,sock_len);
if(ret==-1)
perror("sendto failed");
output:
sendto failed: Network is unreachable
但是,当我运行“add default gateway”命令(如“route add default gw 10.10.10.111”)时,错误消失。当为 netdev 设置新的 ip 地址时,应运行上述命令,否则会出现错误。为什么?谢谢。
不确定为什么 255.255.255.255 不适合您。然而,我自己从未将其用作广播 IP。当我发送广播数据包时,我通常从子网掩码中得出广播 IP,即,如果您的子网掩码是 255.255.255.0 (/24) 并说您的 IP 是 192.168.0.5,那么要发送 UDP 广播,您的目标 IP 应该是192.168.0.255。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)