मैं ऐसा करने में सक्षम होने की कोशिश कर बहुत समय बिताया कंप्यूटर के बीच यूडीपी प्रसारण और मल्टीकास्टिंग। उम्मीद है कि यह दूसरों के लिए आसान बनाता है क्योंकि इस विषय को वेब पर उत्तर ढूंढना काफी मुश्किल है। ये समाधान नोड 0.12.5 में काम करते हैं:
यूडीपी प्रसारण
प्रसारण पते की गणना
प्रसारण पता = (~ सबनेट मास्क) | (होस्ट का आईपी पता) - Wikipedia देखें। ipconfig
(विंडोज) या ifconfig
(लिनक्स) का उपयोग करें, या netmask module चेकआउट करें।
सर्वर
var PORT = 6024;
var dgram = require('dgram');
var client = dgram.createSocket('udp4');
client.on('listening', function() {
var address = client.address();
console.log('UDP Client listening on ' + address.address + ":" + address.port);
client.setBroadcast(true);
});
client.on('message', function (message, rinfo) {
console.log('Message from: ' + rinfo.address + ':' + rinfo.port +' - ' + message);
});
client.bind(PORT);
यूडीपी मल्टीकास्टिंग
var PORT = 6024;
var BROADCAST_ADDR = "58.65.67.255";
var dgram = require('dgram');
var server = dgram.createSocket("udp4");
server.bind(function() {
server.setBroadcast(true);
setInterval(broadcastNew, 3000);
});
function broadcastNew() {
var message = new Buffer("Broadcast message!");
server.send(message, 0, message.length, PORT, BROADCAST_ADDR, function() {
console.log("Sent '" + message + "'");
});
}
क्लाइंट (सही प्रसारण पते के लिए BROADCAST_ADDR बदलने के लिए याद)
मल्टीकास्ट पतों
IPv4 Multicast Address Space Registry और RFC 2365 manual धारा 6 में अधिक गहराई से स्पष्टीकरण को देखते हुए, हम पाते हैं उपयुक्त स्थानीय गुंजाइश मल्टीकास्ट पतों 239.255.0.0/16 और 239.192.0.0/14 (अर्थात, जब तक आप के लिए अनुमति प्राप्त कर रहे हैं अन्य का उपयोग करें)।
नीचे दिए गए मल्टीकास्ट कोड इन पते के साथ लिनक्स (और कई अन्य प्लेटफॉर्म) पर ठीक काम करता है।
विंडोज 8 (और स्पष्ट रूप से विंडोज 7 और संभवतः अन्य) विशिष्ट इंटरफ़ेस के माध्यम से मल्टीकास्ट के लिए भेजता है और सुनता है, और डिफ़ॉल्ट रूप से यह अक्सर गलत इंटरफ़ेस चुनता है, इसलिए आप किसी अन्य मशीन पर मल्टीकास्ट कभी नहीं प्राप्त करते हैं (आप उन्हें केवल स्थानीयहोस्ट पर प्राप्त करते हैं)। (यह मुझे घंटे लगे परीक्षण के माध्यम से यह पता लगा सकते हैं।) कोड, मज़बूती से काम करने के लिए कोड बदलने ताकि आप अंतरफलक आप उपयोग करना चाहते के लिए मेजबान के आईपी पते निर्दिष्ट करते हैं, इस प्रकार है:
सर्वर - server.bind(SRC_PORT, HOST_IP_ADDRESS, function() ...
क्लाइंट - client.addMembership(MULTICAST_ADDR, HOST_IP_ADDRESS);
इन समर्थन स्रोतों पर एक नज़र डालें: NodeJS, Java, C#, और एक सहायक command को देखने के लिए जो मल्टीकास्ट पतों आपने सदस्यता ली - netsh interface ipv4 show joins
सर्वर
var SRC_PORT = 6025;
var PORT = 6024;
var MULTICAST_ADDR = '239.255.255.250';
var dgram = require('dgram');
var server = dgram.createSocket("udp4");
server.bind(SRC_PORT, function() {
setInterval(multicastNew, 4000);
});
function multicastNew() {
var message = new Buffer("Multicast message!");
server.send(message, 0, message.length, PORT, MULTICAST_ADDR, function() {
console.log("Sent '" + message + "'");
});
}
ग्राहक
var PORT = 6024;
var MULTICAST_ADDR = '239.255.255.250';
var dgram = require('dgram');
var client = dgram.createSocket('udp4');
client.on('listening', function() {
var address = client.address();
console.log('UDP Client listening on ' + address.address + ":" + address.port);
});
client.on('message', function (message, rinfo) {
console.log('Message from: ' + rinfo.address + ':' + rinfo.port + ' - ' + message);
});
client.bind(PORT, function() {
client.addMembership(MULTICAST_ADDR);
});
क्या आपके प्रश्न? – TJHeuvel