はじめまして。ネットワークプログラムについて質問させてください。 リミテッドブロードキャスト(255.255.255.255へ)を行いたいのですが、sockaddr_in のアドレス部分に上記を入れても、何故かディレクテッドブロードキャスト(私の環境 では 192.168.1.255 )になってしまいます。正しくリミテッドブロードキャストする 方法はないでしょうか。setsockopt でブロードキャストのフラグを立てる、などは 行っています。環境は FreeBSD & gcc です。 以下、重要部分の抜粋です(エラー処理などは省いています)。 struct sockaddr_in addr; int broadcast = 1; char buf[] = "test"; addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr("255.255.255.255"); addr.sin_port = htons(2000); sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ); setsockopt( sock, SOL_SOCKET, SO_BROADCAST, (char*)&broadcast, sizeof(broadcast) ); sendto( sock, buf, sizeof(buf), 0, (struct sockaddr*)&addr, sizeof(struct sockaddr) ); ごく普通のコードだと思うのですが、パケットをモニターすると、送り先アドレスが ディレクテッドブロードキャストになってしまっています。アドバイスだけでもいいので 助言いただけるとうれしいです。 |