Javascript 为什么我的Node.js脚本看不到在特定端口上发送的任何UDP数据包?
我有一个C应用程序,它为特定的IP和端口发送UDP数据包,它工作得很好,因为我有另一个应用程序接收这些数据包。现在我想发送它们,这样我就可以在我的网页上显示它了——我已经读到node.js将非常适合这里 我在windows环境下安装了node.js的当前版本,并获取了以下代码:Javascript 为什么我的Node.js脚本看不到在特定端口上发送的任何UDP数据包?,javascript,node.js,sockets,networking,udp,Javascript,Node.js,Sockets,Networking,Udp,我有一个C应用程序,它为特定的IP和端口发送UDP数据包,它工作得很好,因为我有另一个应用程序接收这些数据包。现在我想发送它们,这样我就可以在我的网页上显示它了——我已经读到node.js将非常适合这里 我在windows环境下安装了node.js的当前版本,并获取了以下代码: var PORT = 19777; var MULTICAST_GROUP = "224.0.0.251"; var dgram = require("dgram"); var client =
var PORT = 19777;
var MULTICAST_GROUP = "224.0.0.251";
var dgram = require("dgram");
var client = dgram.createSocket("udp4");
client.on("message", function(message, rinfo) {
console.log("received: ",message,rinfo);
});
client.on("listening", function() {
console.log("listening on ",client.address());
client.setBroadcast(true);
client.setTTL(64);
client.setMulticastTTL(64);
client.setMulticastLoopback(true);
client.addMembership(MULTICAST_GROUP);
client.send(payload, 0, payload.length, PORT, MULTICAST_GROUP, function(err,bytes) {
console.log("err: "+err+" bytes: "+bytes);
// client.close();
});
});
client.on("close", function() {
console.log("closed");
});
client.on("error", function(err) {
console.log("error: ",err);
});
client.bind(19777);
现在,我开始从我的C应用程序在以下ip 224.0.0.251和端口19777上发送数据包-但是,在运行客户端应用程序后,我出现以下错误:
C:\Users\user\Desktop>node client.js
error: { [Error: bind EADDRINUSE] code: 'EADDRINUSE', errno: 'EADDRINUSE', sysc
all: 'bind' }
我做错了什么?在解决了这个问题之后,我能在控制台中看到所有的数据包吗?谢谢
-------编辑:
按照John的建议,我修改了应用程序,以便现在只有node.js正在该端口上侦听。由于这一点,我取得了进步,在控制台的输出上,我得到了:
C:\Users\user\Desktop>node client.js
listening on { address: '0.0.0.0', family: 'IPv4', port: 19777 }
C:\Users\user\Desktop\client.js:19
client.send(payload, 0, payload.length, PORT, MULTICAST_GROUP, function(er
^
ReferenceError: payload is not defined
at Socket.<anonymous> (C:\Users\godyckim\Desktop\client.js:19:17)
at Socket.emit (events.js:104:17)
at startListening (dgram.js:139:10)
at dgram.js:230:7
at dns.js:85:18
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3
但是仍然没有可见的数据包。。好的,我看到我没有定义有效负载变量。。。我想要实现的是接收udp发送的数据包,并将其显示在node.js控制台中,这对我来说是一个开始,或者进一步传输数据包,以便我可以在浏览器中看到它们。在第二种情况下,我到底做错了什么?谢谢 这通常意味着您试图将node.js和c应用程序绑定到同一ip/端口。。请记住,只有接收端必须侦听特定端口才能将数据包发送到该端口。。它们来自哪个端口并不重要。谢谢@John,我在上面的帖子中添加了一个编辑部分,你能看一下吗?你试图发送一个应该是缓冲区的负载,但是没有。。您可以使用var payload=newbuffer“出现一条野生消息”创建一个缓冲区;谢谢@John,这就成功了,现在我可以在控制台输出中看到很多数据包。我非常高兴,很高兴你给了我这个暗示:。现在我想处理这些数据,但我不知道它们在我的案例中具体存储在哪里。它们是否存储在某种表格中?还是列表?在内存中。。您可以使用fs轻松地将每个传入数据包写入一个文件。writeFile->但这实际上超出了这个问题的范围