Confronto tra hostname

Una classe semplice che confronta due hostname verificandone l’appartenenza al medesimo host. Per la realizzazione di questa classe viene utilizzata la libreria java.net.

import java.net.*;

public class CompareName {
    public static void main (String args[]) {
	if (args.length == 2) {
	    try {
		InetAddress name1 = InetAddress.getByName(args[0]);
		InetAddress name2 = InetAddress.getByName(args[1]);

		if (name1.equals(name2))
		    System.out.println(name1 + " è uguale a " + name2);
		else
		    System.out.println(name1 + " è diverso da " + name2);
	    }
	    catch (UnknownHostException ue) {
		System.out.println("Non riesco a risolvere il nome.");
	    }
	}
    }
}

Analizziamo un URL

Come ben sappiamo, un URL  altro non è che l’indirizzo di una pagina su Internet. La  classe che segue, riceve in input un URL e restituisce le sue componenti.

import java.net.*;

public class UrlParts {
    public static void main (String args[]) {
	if (args.length == 1) {
	    try {
		// Costruisce l'URL a partire da una stringa.
		URL myurl = new URL(args[0]);

		System.out.println("L'URL e`: " + myurl);

		// Dividiamo l'URL nei suoi vari pezzi.
		System.out.println("Le parti che lo formano sono:");
		System.out.println("\tProtocollo: " + myurl.getProtocol());
		System.out.println("\tHost: " + myurl.getHost());
		System.out.println("\tPorta: " + myurl.getPort());
		System.out.println("\tFile: " + myurl.getFile());
		System.out.println("\tRef: " + myurl.getRef());
	    }
	    catch (MalformedURLException me) {
		System.out.println("Non capisco l'URL: " + args[0]);
	    }
	}
    }
}

Troviamo il server 

La classe che segue prova tutte le porte locali di un host e verifica su quali di queste è attivo un server. 

import java.net.*;

public class LookForUDPPort {
    public static void main (String args[]) {

	DatagramSocket theserver;

	// Proviamo tutte le porte
	for (int theport = 1024; theport < 65536; theport++) {
	    try {
		// Proviamo a costruire la socket
		theserver = new DatagramSocket(theport);

		// Ricordiamoci di chiudere la Socket
		theserver.close();
		}
		catch (SocketException se) {
		    // Se fallisce vuol dire che c'e` un server locale sulla
		    // porta assegnata
		    System.out.println("C'e` un server sulla porta " + theport);
		}
	}
    }
}

Occorrenza di una sottostringa in una stringa

Può essere utile trovare la prima occorrenza di una sottostringa all’interno di una stringa. La classe che segue scandisce i caratteri della stringa s alla ricerca di una sottostringa uguale a t e restituisce la posizione della prima occorrenza,se la trova, altrimenti restituisce -1.
 
public static int indiceDi(String s, String t) { 

        int posizione;      // se è stata trovata t in s 
        boolean finito;     // la scansione di t 
        int i;       // per la scansione della stringa s
        int j;       // per la scansione della stringa t
        posizione = -1; 
        i = 0; 
        while (posizione==-1 && i<=s.length()-t.length()) { 
            /* scandisce i caratteri di t 
               * per verificare che la sottostringa di s 
               * iniziante in posizione i e lunga t.length() 
               * è uguale a t */ 
            j = 0; 
            finito = false; 
            while (!finito && j<t.length()) 
                if (s.charAt(i+j) != t.charAt(j)) 
                    finito = true; 
                else
                    j++; 
            if (!finito) 
                posizione = i; 
            else 
                i++; 
        } 
          return posizione; 
    }

Occorrenze di un carattere in una stringa

La classe seguente calcola quante volte un certo carattere “c” è contenuto all’interno di una data stringa “t”.

    public static int frequenza(String s, char c) { 
        int f;       // frequenza di c in s 
        int i;       // per la scansione dei caratteri  della stringa
        f = 0; 
        /* scandisce i caratteri della stringa */ 
        for (i=0; i<s.length(); i++) 
            if (s.charAt(i) == c) 
                f++; 
        return f; 
   }