1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Tools und Produktivität

Java DatagramSocket: Portwahl

  • Paranoise
  • 18. August 2009 um 19:43
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Paranoise
    Punkte
    60
    Beiträge
    7
    • 18. August 2009 um 19:43
    • #1

    Hallo zusammen!

    Hab folgenden Code zum versenden von Messages via UDP zusammengekleistert:

    Code
    DatagramSocket toSocket;
    
    
    
    
      public boolean send(String message) throws Exception
      {
    
    
        InetAddress ia;
        ia = InetAddress.getByName( "localhost" );
    
    
        int port = 4713;
    
    
        String s = message;
        byte[] data = s.getBytes();
    
    
        DatagramPacket packet = new DatagramPacket( data, data.length, ia, port );
    
    
        toSocket = new DatagramSocket();
        toSocket.send( packet );
    
    
        toSocket.disconnect();
    
    
        return true;
      }
    Alles anzeigen

    Der Code funktioniert auch recht gut und sendet seine Packete raus an irgendjemanden der halt grad an Port 4713 abhört (oder auch nicht ^^)

    Dadurch dass ich aber toSocket mit dem Konstruktor DatagramSocket() aufrufe sucht sich der Client der den Code ausführt für jede Message die er sendet einen neuen, freien Port. Das endet dann darin dass mir irgendwann die freien Ports ausgehen da die verwendeten Ports nicht sofort nach dem senden wieder freigegeben werden. könnt ihr gerne ausprobieren das gibt lustige probleme mit Internet, OS usw... :cool:

    socket.close() am ende habe ich probiert, da funktioniert dann gar nichts mehr. wenn ich dem Konstruktor einen zu verwendenden Port übergebe dann funktionierts nur ab und zu, so jede 300ste message kriegt den Port wieder frei ^^.

    gibts in java ne möglichkeit dem betriebssystem zu "schwören" dass der port sofort wieder freizugeben ist?

  • Paulchen
    Gast
    • 18. August 2009 um 20:05
    • #2
    Zitat von Paranoise

    socket.close() am ende habe ich probiert, da funktioniert dann gar nichts mehr.

    Das äußert sich wie (eigentlich sollte das nämlich gehen)?

    Wenn du andauernd neue DatagramSockets erstellst, ist es kein Wunder, wenn dir nach einiger Zeit die Ports ausgehen. Schon mal über die Möglichkeit nachgedacht, den DatagramSocket wiederzuverwenden anstatt andauernd einen neuen zu erstellen?

  • Paranoise
    Punkte
    60
    Beiträge
    7
    • 18. August 2009 um 21:02
    • #3
    Zitat

    Schon mal über die Möglichkeit nachgedacht, den DatagramSocket wiederzuverwenden anstatt andauernd einen neuen zu erstellen?

    hmm. nein.
    aber hat funktioniert :D

    danke :thumb:

    mfg

  1. Datenschutzerklärung
  2. Impressum