68user's page 掲示板

Prev< No. 4604> Next  [最新発言に戻る] [過去ログ一覧]
No. 4604 # COM 2006/05/16 (火) 18:01:08
はじめまして。ネットワークプログラムについて質問させてください。
リミテッドブロードキャスト(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) );

ごく普通のコードだと思うのですが、パケットをモニターすると、送り先アドレスが
ディレクテッドブロードキャストになってしまっています。アドバイスだけでもいいので
助言いただけるとうれしいです。

Prev< No. 4604> Next  [最新発言に戻る] [過去ログ一覧]