はじめまして。
今、VC++を使ってBROADCAST送信を行おうとしているんですが、
どうもうまくいきません。
(UDP送信まで行ってません。ソケットのBROADCAST許可
ができていません。)
で、教えていただきたいのですが、
nErrorStatus = WSAStartup(MAKEWORD(2,0), &wsaData3);
if(nErrorStatus != 0){
AddDisplayText(ERROR\r\n);
}
socket_3 = socket( AF_INET, SOCK_DGRAM, 0 );
if( socket_3 == INVALID_SOCKET ) {
AddDisplayText(ERROR\r\n);
}
int nLevel = SOL_SOCKET;
int nOption = SO_BROADCAST;
int nOptionValLen = sizeof(int);
BOOL nOptionValue;
int iRet;
iRet = getsockopt(socket_3,nLevel,nOption,
(char *)nOptionValue,&nOptionValLen);
nOptionValue = TRUE;
iRet = setsockopt(socket_3,nLevel,nOption,
(char *)nOptionValue,nOptionValLen);
上記のようなソースを本を参考にして(そのまま?)記述したのですが、
①getsockoptでERR(-1)が返却値になる。
②setsockoptで吹っ飛ぶ。
どこかおかしいところがあるのでしょうか?
宜しくお願いします。
ヘルプには、第四引数にはオプション値を入れる領域への
ポインタを指定せよ、と書いてあります。
解決しました。
const FAR char * となってたので
単純にキャストしてるだけかと思ってました。
(参考ソースにも&が・・・・)
御迷惑お掛けしました。
dairygoodsさん、ありがとうございました。