Salve a tutti
Girovagando qua e là per la rete , in cerca di idee , mi sono imbattutto in questo progetto
http://www.kosmous.com/risorse/articolo.php?id=11
Che , opportunamente indentato (si spera) , risulta così :
codice:
/* La try e la catch utilizzate dopo , gestiscono le ECCEZIONI di codice */

	/* Classe definitrice SOCKET */
	 
class SingoloSocket extends Thread { /* La classe SingoloSocket acquisisce attributi e metodi della superclasse Thread */
	private Socket canale; /* Indica il socket che sta effettuando lo scanning */
	private BufferedReader in; /* Stringa di comando del Pc attaccante memorizzata nel buffer */
	private PrintWriter out; /* Stringa di comando Pc attaccante , dopo aver effettuato la telnet. 
								Verrà visualizzata a video */
	private int porta; /* Porta alla quale cerca di fare accesso il malintenzionato */
	
	
	/* COSTRUTTORE SOCKET */
	
	public SingoloSocket(Socket s) throws IOException {
		canale = s;/* A canale viene assegnato il socket passato come parametro */
		in = new BufferedReader(new InputStreamReader(canale.getInputStream())); /* InputStreamReader legge e decodifica le
																					le stringhe sul canale , le quali vengono memorizzate
																					in un nuovo oggetto BufferedReader , appunto IN */
																				
		out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(canale.getOutputStream())), true); 
		start(); /* Metodo di avvio del Thread che , in questo caso , serve per avviare la Socket (vedi EREDITARIETA') */
	}
	/* Procedura atta al controllo INTRUSIONI (la più importante del nostro Firewall) */
		
	public void run() {
		try {
			while (true) { /* Ciclo Infinito dato che il Firewall deve essere sempre attivo */
				String str = in.readLine(); /* Str immagazzina il valore del comando inserito dal pc "attaccante" */
				porta = canale.getPort(); /* Porta sulla quale avviene l'attacco */
				InetAddress ia = canale.getInetAddress(); /* Memorizza l'indirizzo del'intruso */
				if (str.equals(null)) break; /* Controllo dedicato all'eventuale o meno inserimento di caratteri dell'intruso
												Se non viene rilevato nulla si ricomincia dall'inzio della try */
				/* Altrimenti (implicito) */
				
				System.out.println("La macchina: " + ia.getHostName() +
						" con indirizzo IP " + ia.getHostAddress() +
						" dalla porta " + porta + " si e` connessa!"); /* Visualizza a video le informazioni dell'Host intruso */
				canale.close(); /* Chiude la socket */
				out.println(str); /* Visualizza a video il comando digitato dall'intruso */
			}
			System.out.println("chiudi... "); /* Si annuncia la chiusura del canale */
		} catch (IOException e) { /* Eccezione alzata in caso di errore in I/O */
		} finally { /* La finally , metodo che viene sempre eseguito nonostante la try abbia avuto successo o meno , chiude la connessione */
			try {
				canale.close();
			} catch(IOException e) {} /* Eccezione alzata in caso di errore in I/O */
		}
	}
}
	/* Classe di Gestione della CONNESSIONE */
	
class GestConn {
	public void LanciaPolling(int portaServizio) throws IOException {
		ServerSocket s = new ServerSocket(portaServizio); /* Viene instanziato un ServerSocket, un oggetto che attende
															 richieste di connessione dall'esterno (in ascolto su di una porta) */
															 
		try {
			while(true) {
				Socket canale = s.accept(); /* Il canale di comunicazione è istanziato */
				try {
					new SingoloSocket(canale);
				} catch(IOException e) {
					canale.close();
				}
			}
		} finally {
			s.close();
		}
	}
	
	public static void main(String[] args) throws IOException {
		GestConn gs = new GestConn(); /* Viene istanziata una nuova connessione (definito quindi un Server Socket ecc...)*/
		gs.LanciaPolling(Integer.parseInt(args[0])); /* La funzione LanciaPolling richiede in ingresso il numero della porta
													   Eventualmente gestibile tramite il parametro args , ovvero ciò che viene
													   digitato al momento dell'esecuzione da prompt */
													 
		}
}
Il mio problema è questo: dopo essermi creato anche un programma Lato Client che mi istanzi una socket verso il pc dotato del programma firewall (in questo lo stesso , con LocalHost) questo Si funziona (diciamo) ma a schermo mi viene visualizzata una porta diversa da quello che avevo intenzione di "attaccare"... come mai?

Es: La porta che voglio attaccare è la 5000 , a schermo (sul prompt da cui ho lanciato il Firewall.java) mi viene visualizzato "La macchina 127 ecc..ecc.. sulla porta 4954 è connessa"

Ho disattivato sia il Firewall che uso solitamente su pc (Sygate) che il windows firewall , ovvero gli ho fatto sbloccare l'applicazione java in questione...

Socket Lato Client (presa gentilmente da una discussione qui sul forum)
codice:
import java.io.*;
import java.net.*;


public class ThreadAttack {
  public static void main(String[] args ) {
    try {
       Socket canale = new Socket("localhost",5000);
       ObjectOutputStream oos=new ObjectOutputStream(canale.getOutputStream());
       oos.writeObject("Ciao,come va?");
       canale.close();
    } catch (Exception e) { System.err.println(e); }
}
}
Grazie a tutti per l'aiuto