Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] UDP listener - EADDRINUSE

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

[gelöst] UDP listener - EADDRINUSE

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 3 Kommentatoren 1.0k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W Offline
    W Offline
    womi
    schrieb am zuletzt editiert von womi
    #1

    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:50222
    

    Das 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

    W OliverIOO AlCalzoneA 3 Antworten Letzte Antwort
    0
    • W womi

      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:50222
      

      Das 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

      W Offline
      W Offline
      womi
      schrieb am zuletzt editiert von
      #2

      Da auf meinen Post keine Reaktion kam, habe ich entweder etwas falsch gemacht :thinking_face: , 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.

      1 Antwort Letzte Antwort
      0
      • W womi

        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:50222
        

        Das 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

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von
        #3

        @womi
        Teste mal welches Signal dein Skript erhält, wenn du
        Das hier einbaust

        const process = require('process');
        process.on('exit', (code) => {
          console.log(`About to exit with code: ${code}`);
        });
        

        https://nodejs.org/api/process.html#process_event_exit

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        W 1 Antwort Letzte Antwort
        0
        • W womi

          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:50222
          

          Das 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

          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #4

          @womi Du kannst beim Stoppen des Skripts den Socket schließen:

          onStop(() => { 
              socket.close();
          });
          

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          W 1 Antwort Letzte Antwort
          1
          • OliverIOO OliverIO

            @womi
            Teste mal welches Signal dein Skript erhält, wenn du
            Das hier einbaust

            const process = require('process');
            process.on('exit', (code) => {
              console.log(`About to exit with code: ${code}`);
            });
            

            https://nodejs.org/api/process.html#process_event_exit

            W Offline
            W Offline
            womi
            schrieb am zuletzt editiert von
            #5

            @OliverIO
            Der gibt mir hier gar nichts aus.
            Was nicht schlimm ist, da der Vorschlag von @AlCalzone genau macht, was er soll.

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA AlCalzone

              @womi Du kannst beim Stoppen des Skripts den Socket schließen:

              onStop(() => { 
                  socket.close();
              });
              
              W Offline
              W Offline
              womi
              schrieb am zuletzt editiert von
              #6

              @AlCalzone
              Super, ganz herzlichen Dank! Klappt hervorragend.
              Kann ich das ganze irgendwie als gelöst markieren?

              AlCalzoneA 1 Antwort Letzte Antwort
              0
              • W womi

                @AlCalzone
                Super, ganz herzlichen Dank! Klappt hervorragend.
                Kann ich das ganze irgendwie als gelöst markieren?

                AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #7

                @womi Ich glaube du musst den ersten Beitrag bearbeiten.

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                886

                Online

                32.4k

                Benutzer

                81.5k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe