Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    [DELPHI] Trovare una porta "libera"

    Salve a tutti,

    sto cercando disperatamente (e urgentemente) un modo per trovare, in Delphi, il numero di una porta "libera", ovvero non occupata da nessun server in ascolto.

    Molti server Indy, se settati sulla porta 0, cercano e trovano una porta libera sulla quale restare in ascolto. Ma una volta trovatala, non c'è verso di "recuperarla".

    In sintesi, ho bisogno di una funzione che restituisca un valore intero corrispondente a una qualsiasi porta libera su localhost.

    Ho cercato a lungo su Google, ma tutti i metodi che ho trovato fanno uso di Indy 8 o 9, e io ho Indy 10, che non ha una sola riga di codice in comune con le versioni precedenti.

    Vi ringrazio in anticipo per la pazienza e il tempo che mi dedicate

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Nessuno sa niente al riguardo?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Alla fine ci sono arrivato!!!

    codice:
    function SeekFreePort(start : integer) : integer;
    var
      i : Integer;
      TestSocket : TIdSimpleServer;
    begin
      TestSocket := TIdSimpleServer.Create(nil);
      for i := start to 65535-1 do
        begin
          try
            TestSocket.BoundPort := i;
            TestSocket.BoundIP := '127.0.0.1';
            TestSocket.CreateBinding;
            TestSocket.BeginListen;
          except
            TestSocket.EndListen;
            Continue;
          end;
          Break;
        end;
      Result := i;
      TestSocket.Free;
    end;
    L'ho fatta io ispirandomi a una vecchia funzione che utilizzava ancora la vecchia classe TServerSocket. Diciamo che ho fatto un porting...
    Speriamo serva a qualcun altro!

    P.S.: credo siano necessari i componenti Indy 10 per utilizzare quella funzione.

    A presto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.