Newsgroup: it.comp.java
Titolo: Connessioni da PC casalingo

Vorrei capire una cosa:
Si può, in qulache modo, scrivere un'applicazione che giri su un
computer domestico e che permetta, per esempio, di prendere un file
da internet connettendosi attraverso un provider tramite PPP (o usando
la connessione di Accesso Remoto aperta) ?
Come si usano invece le classi e i socket per le comunicazioni: io
devo fare un'applicazione e metterla su un computer connesso
ad internet in che modo ? su un server ?
e in tal caso, come faccio ad eseguirle ?
Gradirei un esempio pratico perché dalle pagine di informazioni
teoriche su libri non sono riuscito a cavare nulla.
Grazie in anticipo
	!-----------------------------------------------!
	! Giovanni Petrucciani				!	
	! 
giovanni.p...@iol.it
			!
	!-----------------------------------------------!

Allora, per quel poco che so:
import java.net.*;
import java.io.*;
import java.util.Date;
class connessione {
public static void main (String args[]) throws IOException {
  int c;
  URL hp = new URL("
http://www.karawari.com/bott/index.html
");
// dichiari un oggetto URL che ha 4 costruttori:
// URL(String specificatoreURL) come in questo caso
// URL(String nomeProtocollo, String nomeHost, int porta, String percorso)
// URL(String nomeProtocollo, String nomeHost, String percorso)
// URL(URL urlOgg, String specificatore URL)
  URLConnection hpCon = hp.openConnection();
// L'oggetto UrlConnection apre la connessioe con l'idirizzo specificato da
hp, puo generare IOException.
  System.out.println("Data: " + new Date(hpCon.getDate()));
  System.out.println("Content-type: " + hpCon.getContentType());
  System.out.println("Expires: " + hpCon.getExpiration());
  System.out.println("Last-Modified: " + new Date(hpCon.getLastModified()));
  int len = hpCon.getContentLength();
  System.out.println("Content-Length: " + len);
// questi sono metodi per saper la data, il tipo di contenuto e tutte le
altre informazioni
  if (len > 0) {                    // se la lunghezza è positiva stampa il
file
   System.out.println(" === Content === ");
   InputStream input = hpCon.getInputStream();
   int i = len;
   while (((c = input.read()) != -1) && (- -i>0)) {
    System.out.print((char) c);
   }
   input.close();
  }
  else
   System.out.println("Contenuto non disponibile");
}
}
Questo è un'esempietto che ho provato alcuni giorni fa, almeno con me
funzionava.
Ciao

 teoriche su libri non sono riuscito a cavare nulla.
Credo che con prendere un file tu intenda qualcosa tipo via ftp o http.
Apri un socket sulla porta relativa al servizio che ti interessa (21
ftp, 80 http) in questo modo
Socket s = new Socket("indirizzoServerDa cui Prelevare", numPorta);
poi con s.getInputSream() e s.getOutputSream() puoi scrivere e leggere
su quel socket.
Supponiamo che tu volgia prelevare la pagina index.htm dal sito
www.pippo.com
, dopo aver paerto il socket, scriverai (nell'
outputStream)
GET index.htm	(o forse /index.htm, non ricordo, fai un po' di prove con
telnet)
e sull' inputStream ti troverai la pagina.
Se ti servono info piu' precise sui protocolli prova su altavista con
+tutorial +http o quello che ti interessa.
Se ti va bene anche qualcosa di piu' preciso e formale aggiungi anche
+rfc e tolgi +tutorial.
Se precisi meglio cosa devi fare magari posso dirti di piu'.
Nota:
se devi prelevare via http puoi anche prendere lo stream da un oggetto
URL relativo alla pagina.
Ciao
-- 
..almost any game *CAN* be imagined to be an RPG, but a "real RPG" 
would facilitate role-playing, not require spending most of your 
effort on sustaining your SOD        
M. Hughes