Praticamente il mio obbiettivo è quello di bloccare qualsiasi connessione richiesta da un determinato indirizzo ip.
Sono giunto a questa soluzione, ma sembra non funzionare.
Non funziona per un semplice motivo.
La ServerSocket lo impostata con porta 0, perchè dalla API Java, mi sembra di aver capito che in questo modo si metta in ascolto su tutte le porta ... o mi sbaglio???
Questo è il risultato:
codice:
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
* La classe ConnectionIPGuard serve a gestire le connessione tentate da un particolare
* indirizzo ip.
*
*/
public class ConnectionIPGuard extends Thread{
private String ipAdress;
public ConnectionIPGuard(String ipAdress) {
this.ipAdress = ipAdress;
}
/**
* Sovrascrittura del metodo run() della classe Thread.
* Permette di creare un flusso di esecuzione alla creazione di un oggetto
* della classe..
*
*
* Il metodo si mette in ascolto sulle porte, terminando la connessione
* dell'indirizzo ip non lecito.
*
*
*/
public void run() {
try {
int ports = 0;
// Socket per l'intercettazione della socket sulle porte
ServerSocket socket = new ServerSocket(ports);
try {
// Ciclo infinito in modo da controllare ogni istante
// la nuova socket
while (true) {
// Accettazione della socketServer
Socket canal = socket.accept();
try {
/*
* In caso di connessione al nostro Pc, il metodo
* crea un oggetto di tipo ScannerSocket, in
* modo da bloccare la socket e mostrare i dati del
* malintenzionato.
*/
InetAddress ipAdressSocket = canal.getInetAddress();
String ipAdressSocketString = ipAdressSocket.toString();
// Blocca la connessione esclusivamente dell'indirizzo ip specificato
if (this.ipAdress.compareToIgnoreCase(ipAdressSocketString) == 0) {
new ScannerSocket(canal);
}
} catch (IOException e) {
// Chiusura del collegamento e della socket aperta
canal.close();
}
}
} finally {
socket.close();
}
} catch (IOException e) {
}
}
}
Non riesco a creare la connessione, ovvero non so per esempio con telnet, su quale porta io debba connettermi.
Ripeto, io vorrei che il server stessa allerta su qualsiasi porta!