Home PHP Conoscere indirizzo IP con PHP e Java
Conoscere indirizzo IP con PHP e Java
Programmazione & Co.
Lunedì 08 Novembre 2010 11:26

In questa guida voglio mostrare come scoprire l'indirizzo IP usando sia PHP che Java.

PHP

Cominciamo col PHP.

Con questo linguaggio è molto semplice scoprire il vostro indirizzo IP; basta creare una pagina php e metterla su uno spazio che è in grado di interpretarlo.

Potrebbe essere il vostro spazio web, o un server apache creato ad hoc a casa vostra:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   
"http://www.w3.org/TR/html4/loose.dtd">
<html>    
<head>        
<meta http-equiv="Content-Type" content="text/html; charset=UFT-8">        
<title>Your IP Address</title>    
</head>    
<body>        
<p>Your internet IP address is: <tt><strong><?php echo $_SERVER['REMOTE_ADDR']; ?></strong></tt>  
</body>
</html>

In sostanza basta STAMPARE IL CONTENUTO $_SERVER['REMOTE_ADDR'].

L'array superglobale $_SERVER accetta molti argomenti interessanti, tra i quali REMOTE_ADDR che legge l'IP della macchina che richiede la pagina.

Per una lista completa degli argomenti accettati da $_SERVER potete guardare qua.

JAVA

Java deve interagire con la pagina PHP per poter funzionare.

Per prima cosa quindi modifichiamo la pagina così:

<?php
if (isset($_GET['mode'])) {    
if ($_GET['mode'] == "ip") {        
header('Content-type: text/plain; charset=us-ascii');        
echo $_SERVER['REMOTE_ADDR'] . "\r\n";        
exit;    
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UFT-8">
<title>Your IP Address</title>
</head>
<body>
<p>Your internet IP address is: <tt><strong><?php echo $_SERVER['REMOTE_ADDR']; ?></strong></tt>
</body>
</html>

In pratica abbiamo aggiunto un tag php a inizio pagina.

Questa parte di codice serve solo a Java; se guardate infatti è una replica in PHP della parte sotto.

Ci sono due if; se questi sono soddisfatti il codice manda una richiesta alla pagina tramite la funzione header.

Dopo di che stampa $_SERVER['REMOTE_ADDR'] (come prima); questo echo verrà letto da Java che stamperà a video l'indirizzo.

Vediamo il codice Java:

import java.io.*;import java.net.*;import javax.swing.JOptionPane;
public class Main {
 public static void main(String[] args) {      
try {            
String ipAddress = getYourIP();            
JOptionPane.showMessageDialog(null, "Your internet IP address is: " + ipAddress);        
} catch (Exception e) {            
System.err.println(e);      
}    
}
 private static String getYourIP() throws IOException {        
URL url = new URL("http://vostro_url/ip.php?mode=ip");      
URLConnection urlconn = url.openConnection();        
InputStream is = urlconn.getInputStream();        
InputStreamReader isr = new InputStreamReader(is, "UTF-8");        
BufferedReader br = new BufferedReader(isr);        
try {                    
return br.readLine();        
} finally {            
br.close();        
}    
}
}

Il metodo getYourIP ha alcuni oggetti e classi interessanti.

Prima di tutto creiamo un oggetto URL che serve per richiamare la pagina in php.

Come vedete gli viene passata una variabile in GET; questo server per dialogare con lo script PHP: mode=ip deve essere uguale a ($_GET['mode'] == "ip").

URLConnection server per aprire una connessione con l'oggetto URL; come vedete viene usato il metodo openConnection().

InputStream è la classe base di tutti gli input stream, ed è usato per leggere flussi di input, flussi di byte e array di flussi di byte.

InputStreamReader possiamo considerarlo un ponte tra stream di byte e stram di caratteri: legge i byte e li "trasforma" in caratteri usando il charset specificato.

BufferedReader serve invece per leggere il testo dal character-input stream.

Di questa classe usiamo il metodo readLine(), che serve per leggere una linea di testo.

Si considera un linea di testo quella che termina con \n\r o \r\n.

Ecco perchè la riga dello script PHP è così:

echo $_SERVER['REMOTE_ADDR'] . "\r\n";

Nel metodo main viene creato un nuovo oggetto getYourIP e viene stampto il suo contenuto in JOptionPane.showMessageDialog.

 

Vi consiglio le lettura delle varie classi e metodi utilizzati: java.net e java.io.

Ultimo aggiornamento Domenica 23 Ottobre 2011 10:57