2017-05-23 28 views
0

私はこの問題を解決しようとしています。私はNodeJS UDPに関連するすべての答えを既に読んでいますが、無駄です。ここでUDPマルチキャストが失敗しています - NodeJS/Windows 10

Uncaught Exception: Error: write ENOTSUP 
at exports._errnoException (util.js:1022:11) 
at ChildProcess.target._send (internal/child_process.js:654:20) 
at ChildProcess.target.send (internal/child_process.js:538:19) 
at sendHelper (cluster.js:751:15) 
at send (cluster.js:534:12) 
at cluster.js:509:7 
at SharedHandle.add (cluster.js:99:3) 
at queryServer (cluster.js:501:12) 
at Worker.onmessage (cluster.js:450:7) 
at ChildProcess.<anonymous> (cluster.js:765:8) 
at emitTwo (events.js:111:20) 
at ChildProcess.emit (events.js:191:7) 
at process.nextTick (internal/child_process.js:744:12) 
at _combinedTickCallback (internal/process/next_tick.js:67:7) 
at process._tickDomainCallback [as _tickCallback] (internal/process/next_tick.js:122:9) 

は私のコードです:

let dgram = require('dgram'), 
     server = dgram.createSocket('udp4'), 
     multicastAddress = '239.255.255.250', 
     multicastPort = 1900, 
     myIp = '192.168.51.133'; 

    server.bind(multicastPort, myIp, function() { 
     server.setBroadcast(true); 
     server.setMulticastTTL(128); 
     server.setInterface.getbyname(myIp); 
     server.addMembership(multicastAddress, myIp); 
    }); 

    //wait for incoming messages and print ip address 
    server.on('message', function (data, rinfo) { 
     console.log(new Date() + ' RECEIVER received from ', rinfo.address, ':'); 
     console.log(data.toString()); 
    }); 

    //Set up discovery message. Make sure to leave out any extra space in the message. 
    var discover_message = new Buffer('M-SEARCH * HTTP/1.1\r\nHost: 239.255.255.250:1900\r\nMan: ssdp:discover\r\nST: colortouch:ecp\r\n'); 
    server.send(discover_message, 0, discover_message.length, 1900, multicastAddress); 

答えて

1

最後に、このための答えを見つけた私はここで

のWindows 10上では、私が取得していますエラーですよ。この問題は、Windows上に存在し、ノード内のクラスタを使用しているために発生します。問題はserver.bind呼び出しにあります。

server.bind({port: 1900, exclusive: true}, function() { 
     console.log('PORT BIND SUCCESS'); 
     server.setBroadcast(true); 
     server.setMulticastTTL(128); 
     server.addMembership(multicastAddress, myIp); 
    }); 

解決策はオブジェクト{ポート:1900、排他:true}で渡されました。出典:https://github.com/misterdjules/node/commit/1a87a95d3d7ccc67fd74145c6f6714186e56f571

関連する問題