Salve stavo facendo un esercizio sui socket che mi chiede d trovare le porte libere .

codice:
import java.net.*;

public class ScannerPorte {

   public static void main(String args[ ]) {

      for (int i = 1; i < 1024; i++){
         try {
            new DatagramSocket(i);
            System.out.println ("Porta libera"+i);
         } catch (BindException e) {
            System.out.println ("porta già in uso");
         } catch (Exception e) {
            System.out.println (e);
         }
      }
   }
}
è testato e funzionante dato che me l ha corretto il prof!

il bello che se giro con windows mi da effettivamente le porte libere
ma se giro con ubuntu mi dice che sono tutte occupate le porte
qual è il problema?
devo risolverlo dato che per fare il progetto è indicato di lavorare con linux