NEWS
[gelöst] UDP listener - EADDRINUSE
-
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
-
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
Da auf meinen Post keine Reaktion kam, habe ich entweder etwas falsch gemacht
, oder es hat keiner eine Antwort. Das lässt mich, ob der vielen Profis hier, “befürchten”, dass das nicht geht, die binds nochmals zu ändern ohne den javascript Adapter neu zu starten. -
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
@womi
Teste mal welches Signal dein Skript erhält, wenn du
Das hier einbaustconst process = require('process'); process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); }); -
Hi
Ich glaube, ich stelle mich nur blöd an... finde aber keine Lösung.
Ich versuche per Script mit dgram auf einen UDP-Port zu lauschen:var PORT = 50222; var HOST = '0.0.0.0'; var dgram = require('dgram'); var socket = dgram.createSocket('udp4'); socket.bind(PORT, HOST); socket.on('listening', function() { var address = socket.address(); log('UDP Server listening on ' + socket.address + ":" + socket.port); }); //Receive message socket.on('message',function(message,remote) { log('Message: ' + message); }); //Error handling socket.on("error", function (err) { console.log("Socket error: " + err); });Soweit so gut.
Das Problem ist, dass er mir natürlich bei jedem Neustart des Scripts (nicht des javascript adapters) die Meldung ausgibt:Socket error: Error: bind EADDRINUSE 0.0.0.0:50222Das alleine wäre nicht weiter schlimm, aber logischerweise aktualisiert es dann den Code nicht, der bei socket.on('message'... abgearbeitet werden soll.
Wie kann ich den Port wieder freigeben, oder korrekt "reassignen" oder was auch immer?Ich will ja nicht jedesmal den ganzen Adapter neu starten müssen, solange ich am Code herumbastel.
Danke für eine Erleuchtung
-
@womi
Teste mal welches Signal dein Skript erhält, wenn du
Das hier einbaustconst process = require('process'); process.on('exit', (code) => { console.log(`About to exit with code: ${code}`); }); -
@womi Du kannst beim Stoppen des Skripts den Socket schließen:
onStop(() => { socket.close(); });@AlCalzone
Super, ganz herzlichen Dank! Klappt hervorragend.
Kann ich das ganze irgendwie als gelöst markieren? -
@AlCalzone
Super, ganz herzlichen Dank! Klappt hervorragend.
Kann ich das ganze irgendwie als gelöst markieren?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden