相关疑难解决方法(0)

NodeJS UDP组播如何

我正在尝试将UDP多播数据包发送到:230.185.192.108,以便所有订阅者都会收到.有点卡住了.我相信它正确播放,但似乎无法与任何客户端进行任何选择.

服务器:

var news = [
   "Borussia Dortmund wins German championship",
   "Tornado warning for the Bay Area",
   "More rain for the weekend",
   "Android tablets take over the world",
   "iPad2 sold out",
   "Nation's rappers down to last two samples"
];

var dgram = require('dgram'); 
var server = dgram.createSocket("udp4"); 
server.bind();
server.setBroadcast(true)
server.setMulticastTTL(128);
server.addMembership('230.185.192.108'); 

setInterval(broadcastNew, 3000);

function broadcastNew() {
    var message = new Buffer(news[Math.floor(Math.random()*news.length)]);
    server.send(message, 0, message.length, 8088, "230.185.192.108");
    console.log("Sent " + message + " to the wire...");
    //server.close();
}
Run Code Online (Sandbox Code Playgroud)

客户

var PORT …
Run Code Online (Sandbox Code Playgroud)

udp multicast node.js socket.io

26
推荐指数
2
解决办法
3万
查看次数

由于"EBADF",Node.js,dgram.setBroadcast(flag)失败

我正在使用Node.js 0.6.9,我正在尝试发送数据报广播包.码:

var sys = require('util');
var net = require('net');

var dgram = require('dgram');
var message = new Buffer('message');
var client = dgram.createSocket("udp4");
client.setBroadcast(true);
client.send(message, 0, message.length, 8282, "192.168.1.255", function(err, bytes) {
  client.close();
});
Run Code Online (Sandbox Code Playgroud)

运行代码:

$ node test.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: setBroadcast EBADF
    at errnoException (dgram.js:352:11)
    at Socket.setBroadcast (dgram.js:227:11)
    at Object.<anonymous> (/home/letharion/tmp/collision/hello.js:25:8)
    at Module._compile (module.js:444:26)
    at Object..js (module.js:462:10)
    at Module.load (module.js:351:32)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:482:10)
    at EventEmitter._tickCallback …
Run Code Online (Sandbox Code Playgroud)

node.js

16
推荐指数
2
解决办法
7401
查看次数

为什么我的UDP组播没有到达网络上的机器?

我正在尝试使用UDP多播设置自动发现,并使用来自互联网的一些示例代码.这似乎当我运行在客户端和在同一台机器上的服务器工作正常,但是当我在不同的机器上运行它们,无论是与一机在虚拟机上运行我的机器(VirtualBox的)上或在其他"真正"的机器网络然后其他机器似乎永远不会收到正在广播的消息.

在一些谷歌搜索后,似乎可能的罪魁祸首将是路由器(SpeedTouch 780)可能正在丢弃数据包.我怎样才能检查是否是这种情况?他们可以检查其他事情以尝试追踪问题吗?可能完全是别的东西吗?

代码:

服务器代码

using System;
using System.Net.Sockets;
using System.Text;

internal class StockPriceMulticaster
    {
    private static string[] symbols = {"ABCD", "EFGH", "IJKL", "MNOP"};

    public static void Main ()
        {
        using (UdpClient publisher = new UdpClient ("230.0.0.1", 8899))
            {
            Console.WriteLine ("Publishing stock prices to 230.0.0.1:8899");
            Random gen = new Random ();
            while (true)
                {
                int i = gen.Next (0, symbols.Length);
                double price = 400*gen.NextDouble () + 100;
                string msg = String.Format ("{0} {1:#.00}", symbols, price);
                byte[] sdata = Encoding.ASCII.GetBytes (msg); …
Run Code Online (Sandbox Code Playgroud)

c# udp multicast

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

multicast ×2

node.js ×2

udp ×2

c# ×1

socket.io ×1