[英]Receiving specific TCP commands with nodejs and handling them
我的本地設備有一台通過TCP發送JSON數據的設備:
ex. {"cmd": "listactions", "id": 13, "value": 100}
數據從端口8000
上的192.168.0.233
發送(我已經用wireshark檢查過)
我想(和我的家庭服務器一起)使用nodejs截獲這些特定命令,並通過pusher發送它們。
我對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連接),並且篩選出想要的內容非常復雜。 基本上,您將重新實現網絡堆棧。 別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.