Portscanner in Java | ||
Data |
by "dlrm9m" |
|
11/Jume/2006 |
Published by Quequero | |
La guerra è pace La libertà è schiavitù L'ignoranza è forza |
Bell'idea, grazie dlrm! |
La guerra è pace La libertà è schiavitù L'ignoranza è forza |
.... |
|
.... |
Difficoltà |
()NewBies (X)Intermedio ( )Avanzato ( )Master |
Introduzione |
Tools usati |
Essay |
ammette 2 valori .Uno String per l'host e uno Integer per la porta.Come vediamo il costruttore può funzionare anche in altri modi ma a noi gli altri nn interessano.Cominciamo a buttar giù un pò di listato:
|
Prima di andare avanti vi ricordo un pò di teoria sui
metodi
Un metodo è formato così:
attributo tipo dato di ritorno nome del metodo(eventuali parametri in ingresso)
attributo:Public o Private
tipo di dato di ritorno:Può essere Int String Void...
nome del metodo:E' il nome che volete dare al metodo
(eventuali parametri in ingresso):Sono paremetri che arrivano da altre classi
esempio:
public int Uno (int a, int b)
Questo è un metodo che restituisce un valore int avendo in ingresso 2 parametri int
Ora dopo questa breve parentesi andiamo avanti:
creiamo la nostra classe e la chiamiamo port con la p maiuscola e dentro incorporiamo il nostro costruttore Socket che è formato così:
public
Socket(String host,int port)
throws UnknownHostException,
IOException
Come vediamo troviamo pure un throws cioè
la possibilità che il costrutto non vada .Infatti può generare
2 errori .L'host che abbiamo inserito non esiste oppure c'è stato un
'errore di I/O .Per ovviare a questo problema usiamo il Throwable per gestire
più errori
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html
Infine usiamo un try per verificare se la connessione
avviene .
OK continuiamo con il listato
|
COme vediamo viene creata una connessione con il SOcket
Tralasciamo per un pò la parte java e passiamo al jsp.In pratica a noi
serve un pagina in jsp in cui ci sia un form con 2 textbox [una per l'host e
una per la porta da esaminare] e infine un button che premuto mandi al costrutto
Socket l'host e la porta.
Vediamo come possiamo fare
Teoria sui tag jsp:
il jsp hai i tag che si indicano con
<% %>
per includere si usa
<%@ %>
per stampare a video
<%= %>
Ok cominciamo a costruire la pagina jsp
includiamo prima di tutto i Packages
|
Vediamole in dettaglio
java.util.*,java.lang.* servono per caricare gli Object ,la classe Socket e
tutto quello che ci può servire
project1.Port ->>Questa inclusione serve per includere la classe Port
che nel mio caso fa parte del Package project1
Creiamo un'stanza alla classe
|
D'ora in poi a rappresentera il nostro riferimento alla classe Port
Cosa importante che dimenticavo di dire Il nome della pagina jsp non ve lo scordate
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Portscanner</title>
</head>
Questa me la risparmio....
Passiamo al body
Ricordavate che dovevamo
creare un form con 2 textbox e un button?
Bene eccole qua
<body>
<form action="ilnomedellavostrapagina.jsp" method="post"
>
Host<input type="text" name="host" /><br>
Port<input type="text" name="porta" /><br>
<input type="submit" name="invia" value="invia"
/>
</form>
Non penso ci siano commenti da fare no?
Ora arriva la parte bella....ihih
Facciamo un piccolo algoritmo sui nostri STEP
1)l'utente immetterà
l'host ,la porta e premerà il button
2)Il form invierà le informazioni a questa stessa pagina quindi dobbiamo
prepararla a ricevere le info
3)Richiamiamo la classe java
4)Restituiamo all'utente il risultato
Premesso che la fase 1) la farà l'utente passiamo alla 2)
Prepariamo la pagina all'arrivo dei dati con il metodo request.getParameter che riceve i parametri inviati dal form
<% String host =request.getParameter("host");
String port =request.getParameter("porta");
MA se notate bene c'è una cosa che nn và
public Socket(String host,int port) -->accetta un int e uno String
Come facciamo???Bene eco perchè abbiamo incluso java.lang.Integer.* FAremo una conversione da String a int.
C'è da dire una cosa però prima.La funzione che andremo a richiamare parte subito all'apertura della pagina e se non trova valori và in errore.Quindi dobbiamo mettere un controllo che verifichi che la variabile da trasformare nn sia nulla.Così dopo la conversione mandiamo i dati alla classe Port
|
</body>
</html>
Esaminiamo questa
parte
<%= a.Socket(host,portint) %>
Inviamo i dati e aspettiamo un risultato che stamperemo con <%=
Con la jsp abbiamo terminato.Torniamo alla classe java
Allora la classe Port ha
ricevuto i valori e deve restituire il risulato della connessione alla jsp
Per far questo possimao sfruttare usiamo la funzione StringBuffer
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html
StringBuffer risultato =new StringBuffer();
Creiamo cosi una StringBuffer con nome risultato.Il metodo di questo costruttore che useremo sarà
append(String str) Che restituiràuna stringa
MA vediamolo in atto
Ometto la parte iniziale della classe
|
COme vediamo lo StringBuffer
risultato contiene "si ok è aperta"
Siccome dobbiamo far tornare una valore stringa lo convertiamo in string con
il toString.
Abbiamo quasi finito....
Ora implementiamo la stessa cosa nel catch
|
Quindi la classe Port completa è questa
|
FiNE
Note finali |
Grazie a tutta la UIC. Al forum e a tutti quanti!!!!
Disclaimer |
Divertitevi a smanettare sempre.