DeletedUser
Ospite
Salve a tutti.
Ho deciso di postare in questo thread un codice JAVA scritto da ME per poter creare un server HTTP.
Partendo con ordine preferisco prima specificare alcune cose per rendere chiaro il codice che andrò a postare successivamente.
Che cos'è JAVA?
JAVA è un linguaggio di programmazione orientato ad oggetti.
(Sembrerebbe che il nome JAVA derivi dall'abitudine dei suoi creatori di andare a prendere il caffè in una piccola isola dell'indonesia. Il tipo di caffè era proprio chiamato java)
Cosa significa orientato ad oggetti?
Orientato ad oggetti significa che questo tipo di linguaggio permette di sviluppare oggetti software in grado di comunicare tra di loro attraverso l'invio di appositi messaggi. Inoltre il linguaggio orientato ad oggetti permette una manutenzione più rapida del codice e permette la creazione anche di interfacce grafiche.
Qual'è il suo utilizzo?
JAVA serve per creare applicazioni WEB e ormai, questo tipo di linguaggio, è onnipresente in qualsiasi programma (o quasi).
Basti pensare che per la creazioni di applicazioni android viene utilizzato questo codice (seppure lievemente modificato).
Che cosa serve il tuo codice? che cos'è un server HTTP?
Il server HTTP (Hyper Text Transfer Protocol) è un tipo di server che fornisce, su richiesta di un utente o client, un file di qualsiasi tipo (come le pagine web). L'insieme di tutti questi server forma il classico WWW ovver Wolrd Wide Web.
Il codice da me scritto permette appunto la creazione di un server per permettere a chi lo desidera di vedere un sito da voi creato senza il bisogno di utilizzare host presenti in internet che siano essi gratis o a pagamento.
Ora posterò il codice e di seguito renderò più chiaro quanto detto.
Prima di tutto per utilizzare java basterebbe un semplice blocco note, ma avrete la necessità di un ambiente di sviluppo serio. Gratuiti ce ne sono molti ma consiglio sempre di utilizzare NetBeans. Ad ogni modo, datemi un paio di giorni, posterò una guida su come scaricare e installare NetBeans.
In seconda parte creiamo tre classi differenti. Che chiameremo
Tutti appariranno con estensione *.java
Prima classe MAIN
Il main sarà la classe che farà funzionare il vostro programma e che voi dovrete far partire con NetBeans.
Questo codice creare semplicemente il vostro server e lo mette in ascolto sulla porta 8080
Seconda classe SERVER
Siccome il codice è articolato e complesso non spiegherò nel dettaglio ogni riga di codice anche perchè è opportunamente commentato per chiarire le idee anche ai meno esperti.
La classe server specificherà dove si trova il vostro sito hostato il locale e dove si trova la vostra index.
String Directroy sta ad indicare dove si trovano i vostri file. Nel mio caso nella cartella HTML.
String index invece la index della vostra pagine web.
Specificato questo potrete cambiare anche il numero di richiste massime da supportare e altre piccole cose.
Inoltre è specificata l'intestazione della richiesta HTTP ma che comunque non è da modificare.
Potete decidere anche la porta da utilizzare da 0 a 65535.
La terza e ultima classe è ServerThread
Questa classe permette la creazione del server e gestisce le richieste MULTITHREAD .
N.B: Una volta eseguito il codice il server si metterà in ascolto. Per visualizzarlo vi basterà andare su un browser e scrivere 127.0.0.1:8080 o un numero diverso a seconda della porta che utilizzerete.
Per farlo visualizzare a dei vostri amici sarà sufficiente comunicare loro il vostro indirizzo IP con la vostra porta e potranno vederlo.
In alternativa, in modo molto più sicuro ed efficente, potrete utilizzare il programma DyDNS che si occuperà di tradurre il vostro indirizzo IP in un nome.
Ad esempio il vostro sito sarà raggiungibile all'indirizzo miosito.ath.cx:8080.
A breve comunque posterò anche una guida su come scaricare e utilizzare DyDNS oppure No-IP
Ho creato questa guida a scopo informativo. Il codice è proprietario e scritto da me, così come le informazioni su JAVA vengono da mie personali esperienze passate sui libri a studiare.
Vi consiglio di utilizzare questo codice per far vedere i vostri report
Ho letto spesso di discussioni su ImageShack, limite immagini, la fatica di caricare e scaricare immagini continuamente, caricare 500 file. Roba da matti.
Grazie a questo codice voi mettete le vostre immagini in una cartella, li mettete dentro un file html e li fate vedere a chi volete.
Il file HTML sarà banale e dovrà così apparire.
basta un file blocco note e salvarlo come index.html
EDIT: EVITATE LE PORTE 135,445,137-139 che sono potenzialmente pericolose.
EDIT 2: Ecco a voi le altre guide
Guida Installazione NetBeans http://forum.tribals.it/showthread.php?t=19484
Guida Installazione DyDNS http://forum.tribals.it/showthread.php?t=19483
Ho deciso di postare in questo thread un codice JAVA scritto da ME per poter creare un server HTTP.
Partendo con ordine preferisco prima specificare alcune cose per rendere chiaro il codice che andrò a postare successivamente.
Che cos'è JAVA?
JAVA è un linguaggio di programmazione orientato ad oggetti.
(Sembrerebbe che il nome JAVA derivi dall'abitudine dei suoi creatori di andare a prendere il caffè in una piccola isola dell'indonesia. Il tipo di caffè era proprio chiamato java)
Cosa significa orientato ad oggetti?
Orientato ad oggetti significa che questo tipo di linguaggio permette di sviluppare oggetti software in grado di comunicare tra di loro attraverso l'invio di appositi messaggi. Inoltre il linguaggio orientato ad oggetti permette una manutenzione più rapida del codice e permette la creazione anche di interfacce grafiche.
Qual'è il suo utilizzo?
JAVA serve per creare applicazioni WEB e ormai, questo tipo di linguaggio, è onnipresente in qualsiasi programma (o quasi).
Basti pensare che per la creazioni di applicazioni android viene utilizzato questo codice (seppure lievemente modificato).
Che cosa serve il tuo codice? che cos'è un server HTTP?
Il server HTTP (Hyper Text Transfer Protocol) è un tipo di server che fornisce, su richiesta di un utente o client, un file di qualsiasi tipo (come le pagine web). L'insieme di tutti questi server forma il classico WWW ovver Wolrd Wide Web.
Il codice da me scritto permette appunto la creazione di un server per permettere a chi lo desidera di vedere un sito da voi creato senza il bisogno di utilizzare host presenti in internet che siano essi gratis o a pagamento.
Ora posterò il codice e di seguito renderò più chiaro quanto detto.
Prima di tutto per utilizzare java basterebbe un semplice blocco note, ma avrete la necessità di un ambiente di sviluppo serio. Gratuiti ce ne sono molti ma consiglio sempre di utilizzare NetBeans. Ad ogni modo, datemi un paio di giorni, posterò una guida su come scaricare e installare NetBeans.
In seconda parte creiamo tre classi differenti. Che chiameremo
- Main
- Server
- ServerThread
Tutti appariranno con estensione *.java
Prima classe MAIN
Il main sarà la classe che farà funzionare il vostro programma e che voi dovrete far partire con NetBeans.
Questo codice creare semplicemente il vostro server e lo mette in ascolto sulla porta 8080
Codice:
package http_server;
import java.io.*;
/**
*
* @author Filippo
*/
public class Main {
public static void main (String args[]) throws IOException{
//Creo server
Server server = new Server(8080);
//Metto il server in ascolto
server.ascolto();
}
}
Seconda classe SERVER
Siccome il codice è articolato e complesso non spiegherò nel dettaglio ogni riga di codice anche perchè è opportunamente commentato per chiarire le idee anche ai meno esperti.
La classe server specificherà dove si trova il vostro sito hostato il locale e dove si trova la vostra index.
Codice:
String directory = "..\\HTML\\";
String index = "index.html";
String Directroy sta ad indicare dove si trovano i vostri file. Nel mio caso nella cartella HTML.
String index invece la index della vostra pagine web.
Specificato questo potrete cambiare anche il numero di richiste massime da supportare e altre piccole cose.
Inoltre è specificata l'intestazione della richiesta HTTP ma che comunque non è da modificare.
Potete decidere anche la porta da utilizzare da 0 a 65535.
Codice:
package http_server;
/**
*
* @author Filippo
*/
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
public class Server {
private ServerSocket socket;
private int port = 8080;
//Numero richieste
private int richiesteMax = 200;
String directory = "..\\HTML\\";
String index = "index.html";
//Messaggio di errore
String errore = "Errore HTTP 404";
Socket sock;
public Server() throws IOException {
socket = new ServerSocket(port, richiesteMax);
}
public Server(int porta) throws IOException {
// Controllo se la porta va bene altrimenti inserisco da default la 8080
port = (porta >= 0 && porta <= 65535) ? porta : port;
// Creo il socket
socket = new ServerSocket(port, richiesteMax);
}
public void percorsoDirectory(String dirPath) {
String percorsoDir = "";
for (int i = 0; i < dirPath.length(); i++) {
percorsoDir = percorsoDir + dirPath.charAt(i);
// In caso trovi \
if (dirPath.charAt(i) == '\\') {
// lo riscrivo
percorsoDir = percorsoDir + dirPath.charAt(i);
}
}
directory = percorsoDir;
}
// Metto il server in ascolto
public void ascolto() throws IOException {
System.out.println("Il Server è in ascolto \n");
while (true) {
sock = socket.accept();
// Creo il Thread
ServerThread thread = new ServerThread(sock, this);
thread.start();
}
}
public String getAnswerFile(String risorsa) {
String html = "";
FileInputStream fileStream = null;
try {
// Provo a prendere la risorsa
fileStream = new FileInputStream(risorsa);
} catch (FileNotFoundException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
Scanner scanner = new Scanner(fileStream);
// Per tutta la lunghezza del file
while (scanner.hasNext()) {
html += scanner.nextLine() + "\n";
}
try {
fileStream.close();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
scanner.close();
// Stringa dell'intestazione
String pagina = "HTTP/1.1 200 OK\r\n" + "Connection: open\r\n"
+ "Server: Java (Windows)\r\n" + "Content-Lenght:" + html.length()
+ "\r\n" + "Content-Type: text/html\r\n\r\n";
// Ritorno l'intestazione e il file letto
return pagina + html;
}
public String readRequest(String request) {
String pathRisorsa = "";
String v[] = request.split(" ");
// Se trovo GET alla posizione 0
if (v[0].equals("GET")) {
File risorsa = new File(directory + index);
// e se il file posso leggerlo ed esiste
if (risorsa.canRead() && risorsa.exists()) {
// allora mi costruisco il percorso
pathRisorsa = risorsa.getPath();
// e lo restituisco
return pathRisorsa;
} else {
pathRisorsa = errore;
//altrimenti ti stampo il messaggio 404
return pathRisorsa;
}
}
else {
pathRisorsa = "Errore!";
return pathRisorsa;
}
}
// Invio il tutto!
public void sendReply(String resource, DataOutputStream out) {
try {
String s = getAnswerFile(resource);
out.writeBytes(s + '\n');
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "ERRORE: " + ex);
}
}
}
La terza e ultima classe è ServerThread
Questa classe permette la creazione del server e gestisce le richieste MULTITHREAD .
Codice:
package http_server;
/**
*
* @author Filippo
*/
import java.io.*;
import java.net.*;
import javax.swing.*;
public class ServerThread extends Thread {
private Socket s;
private Server server;
public ServerThread() {
s = new Socket();
try {
server = new Server();
} catch (IOException ex) {
}
}
// Costruisco il mio server
public ServerThread(Socket socket, Server mainServer) {
s = socket;
server = mainServer;
}
@Override
public void run() {
try {
// Inizializzo gli stream
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(s.getInputStream()));
DataOutputStream streamOutput = new DataOutputStream(s.getOutputStream());
String leggo = "";
while(!bufferReader.ready()){}
while (bufferReader.ready()) {
// Finchè il buffer legge lo inserisco nella mia stringa
leggo += bufferReader.readLine() + "\n";
}
leggo = leggo.split("\n")[0];
//Invio tutto
server.sendReply(server.readRequest(leggo), streamOutput);
// chiudo lo stream
streamOutput.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Errore\n");
}
}
}
N.B: Una volta eseguito il codice il server si metterà in ascolto. Per visualizzarlo vi basterà andare su un browser e scrivere 127.0.0.1:8080 o un numero diverso a seconda della porta che utilizzerete.
Per farlo visualizzare a dei vostri amici sarà sufficiente comunicare loro il vostro indirizzo IP con la vostra porta e potranno vederlo.
In alternativa, in modo molto più sicuro ed efficente, potrete utilizzare il programma DyDNS che si occuperà di tradurre il vostro indirizzo IP in un nome.
Ad esempio il vostro sito sarà raggiungibile all'indirizzo miosito.ath.cx:8080.
A breve comunque posterò anche una guida su come scaricare e utilizzare DyDNS oppure No-IP
Ho creato questa guida a scopo informativo. Il codice è proprietario e scritto da me, così come le informazioni su JAVA vengono da mie personali esperienze passate sui libri a studiare.
Vi consiglio di utilizzare questo codice per far vedere i vostri report
Ho letto spesso di discussioni su ImageShack, limite immagini, la fatica di caricare e scaricare immagini continuamente, caricare 500 file. Roba da matti.
Grazie a questo codice voi mettete le vostre immagini in una cartella, li mettete dentro un file html e li fate vedere a chi volete.
Il file HTML sarà banale e dovrà così apparire.
basta un file blocco note e salvarlo come index.html
Codice:
<html>
<head>
<title>Miei Report</title>
</head>
<body>
<img src="percorsoMioReport.estensione">
</body>
</html>
EDIT: EVITATE LE PORTE 135,445,137-139 che sono potenzialmente pericolose.
EDIT 2: Ecco a voi le altre guide
Guida Installazione NetBeans http://forum.tribals.it/showthread.php?t=19484
Guida Installazione DyDNS http://forum.tribals.it/showthread.php?t=19483
Ultima modifica di un moderatore: