Node.js 使用NodeJ接收特定的TCP命令并对其进行处理
我在本地有一台通过TCP发送JSON数据的设备:Node.js 使用NodeJ接收特定的TCP命令并对其进行处理,node.js,tcp,Node.js,Tcp,我在本地有一台通过TCP发送JSON数据的设备: ex.{“cmd”:“listactions”,“id”:13,“value”:100} 数据从192.168.0.233端口8000 (我已经和wireshark核实过了) 我想(用我的主服务器)用nodejs截取这些特定命令,并用发送它们 我对nodejs几乎没有经验&似乎无法让它正常工作。我尝试了以下方法: net = require('net'); var server = net.createServer(function(sock)
ex.{“cmd”:“listactions”,“id”:13,“value”:100}
数据从192.168.0.233
端口8000
(我已经和wireshark核实过了)
我想(用我的主服务器)用nodejs截取这些特定命令,并用发送它们
我对nodejs几乎没有经验&似乎无法让它正常工作。我尝试了以下方法:
net = require('net');
var server = net.createServer(function(sock) {
sock.setEncoding('utf8');
sock.on('data', function (data) {
// post data to a server so it can be saved and stuff
console.log(data);
// close connection
sock.end();
});
sock.on('error', function (error) {
console.log('******* ERROR ' + error + ' *******');
// close connection
sock.end();
});
});
server.on('error', function (e) {
console.log(e);
});
server.listen(8000, '192.168.0.233', function(){
//success, listening
console.log('Server listening');
});
但是它抱怨EADDRNOTAVAIL,从研究中我了解到这意味着端口正在使用。。。我不明白,因为我能和Wireshark合作
正确的方法是什么?Wireshark不会监听所有端口。它使用内核驱动程序(带有libpcap或winpcap)来“嗅探”在线数据。也就是说,它不会夹在任何事情之间。这不是一个中间人。它只是在发送数据时接收数据的副本 如果希望应用程序接收数据,则需要侦听该端口。您应该使用netstat找出端口8000上监听的进程,并将其终止。然后,您可以在端口8000上收听 理论上你可以使用libpcap来获取你的数据,但那太疯狂了。这是一个巨大的开销,无论如何都要在这个端口上监听一些东西(毕竟这是一个TCP连接),要过滤掉你想要的东西非常复杂。基本上,您将重新实现网络堆栈。不要