Java DatagramSocket - BindException

C

cl3mens

Mitglied
Thread Starter
Dabei seit
14.03.2005
Beiträge
43
Reaktionspunkte
1
abend liebe macuser,

will in java einen kleinen syslog-server basteln, der einfach alle udp-pakete port 514 ausgibt ...

DatagramSocket socket = new DatagramSocket( 514 );

liefert mir allerdings eine

java.net.BindException: Permission denied

schätz mal, das liegt am niedrigen port. kann ich das irgendwie umgehen?

mein versuch:

Code:
import java.net.*;
import java.io.*;

public class SyslogServer implements Runnable {
    
 
    public SyslogServer() {
    }
    
    public void run( )
    {
       try
       {
            byte data[] = new byte[ 1024 ];
            DatagramPacket packet;
            DatagramSocket socket = new DatagramSocket( 514 );
       
       while ( true )
        {
            
            packet = new DatagramPacket( data, data.length );
            socket.receive( packet );
            
            System.out.println(packet.getData().toString());     
        }
       }
        catch ( Exception e ) 
        {
           System.out.println( e );
        }
    }    
}
 
Das liegt daran, dass alle Ports < 1024 für das System reserviert sind und nur die Übrigen für einen normalen Benutzer nutzbar sind.

Wenn du einen kleineren Port als 1024 nutzen willst brauchst du root-Rechte. (Stichwort: sudo)
 
wow, das ging ja schnell ...

und wie mach ich das am besten? ... wuerd gern die run/build-funktionen im NetBeans nutzen ... soll ich mich im anmeldeschirm als root einloggen? ... immer mit der console kompilieren ist auch muehsam ...

dankend.
 
keiner eine idee wie ich die ports < 1024 auch unter "normalen" usern nuetzen kann? SecurityManager? ich kenn mich jedenfalls nicht aus ...

am rande der verzweiflung,
clemens
 
was willsten damit machen? im Hintergrund als logger mitlaufen lassen??
dann einfach als root starten das Progrämmchen
 
is ein dialog mit dem die eintrudelnden syslogmessages eingelesen, formatiert, angezeigt und in mysql-db geschrieben werden ... ueber eine weboberflaeche lassen sich dann verschiedene sachen der einzelnen komponenten anschauen ... kleine spielerei fuer die schule ...

arbeite mit netbeans ... und ist daweil ziemlich viel testerei ... wie fuer ich das "als root" aus? immer in der console mit sudo ausfuehren waer bissal muehsam ... g
 
Zurück
Oben Unten