私のプログラムは、dgram.udp4ソケットのsend()メソッドを実行するとEACCESエラーをスローしますが、Windowsでのみ発生します。
コード:
var dgram = require('dgram');
var monsocket = dgram.createSocket("udp4");
monsocket.on("listening", function () { comBroadcastCallUp(); });
var comBroadcastCallUp = function() {
var message = new Buffer(JSON.stringify({
protocol: "psdp",
command: "call-up"
}));
monsocket.setBroadcast(true);
monsocket.send(message, 0, message.length, 32681, '255.255.255.255', function (err) {
if (err) console.log(err)
else console.log("<PcStatus:PSDP> Message sent: " + message + os.EOL + "Message length: " + message.length);
});
monsocket.setBroadcast(false);
}
monsocket.bind(32681);
同じコード、Windowsでのターミナル出力:
{ [Error: send EACCES] code: 'EACCES', errno: 'EACCES', syscall: 'send' }
Linuxでのターミナル出力:
<PcStatus:PSDP> Message sent: {"protocol":"psdp","command":"call-up"}
Message length: 39
ファイアウォールをチェックします。他のプログラムがポートをビジー状態にした場合、何も...
255.255.255.255
Windows 7以降、へのブロードキャストはサポートされなくなったと思います。代わりに、送信を特定のサブネットに制限する必要があります。
また、すべてのルーターが255.255.255.255
。宛てのパケットをルーティングするわけではないことにも注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加