8

次のように、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),0,
       (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 」のような「デフォルトゲートウェイの追加」コマンドを実行すると、エラーは消えます.netdevに新しいIPアドレスを設定する場合、上記のコマンドを実行する必要があります.そうしないと、エラーが発生します. なんで?ありがとう。

4

1 に答える 1