发送广播数据报 [英] Send Broadcast datagram

查看:135
本文介绍了发送广播数据报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要向连接到我的网络的所有机器(服务器)发送广播数据报。

I need to send a broadcast datagram to all machine (servers) connected to my network.

我正在使用NodeJS Multicast

I'm using NodeJS Multicast

客户

var dgram = require('dgram');
var message = new Buffer("Some bytes");
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 41234, "localhost");
// If I'm in the same machine 'localhost' works
// I need to do something 192.168.0.255 or 255.255.255
client.close();

服务器

 var dgram = require("dgram");

 var server = dgram.createSocket("udp4");

 server.on("message", function (msg, rinfo) {
   console.log("server got: " + msg + " from " +
     rinfo.address + ":" + rinfo.port);
 });

 server.on("listening", function () {
   var address = server.address();
   console.log("server listening " + address.address + ":" + address.port);
 });

 server.bind(41234);

谢谢。

推荐答案

我从未使用过Node.js,但我记得用Berkely套接字(这似乎是最广泛使用的套接字实现)你需要启用 SO_BROADCAST socket选项,可以将数据报发送到广播地址。查看 dgram 文档,似乎有它的一个函数

I never used Node.js, but I do recall that with Berkely sockets (which seem to be the most widely used implementation of sockets) you need to enable the SO_BROADCAST socket option to be able to send datagrams to the broadcast address. Looking up the dgram documentation, there seems to be a function for it.

var client = dgram.createSocket("udp4");
client.setBroadcast(true);
client.send(message, 0, message.length, 41234, "192.168.0.255");

您可能想以编程方式查找广播地址,但我无法帮助您。

You might want to find out the broadcast address programmatically, but I can't help you with that.

这篇关于发送广播数据报的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆