Newsgroup: it.comp.java
Titolo: Applet, socket e sicurezza. CHE FARE?

Ciao a tutti.Un problemino che suppongo abbastanza banale per chi non è,
come me, un "principiante" di java.
Voglio implementare un'architettura a tre strati con Java nel modo più
semplice possibile: da una parte un'interfaccia client costruita con varie
applets, dall'altra un server che ascolta la richiesta di servizi tramite
dei socket, e che a sua volta gira le richieste ai vari database. Il punto
che non mi torna è il passaggio tra applet e server: ho fatto alcuni test,
ma il collegamnto tramite socket funziona solo se l'applet la esegue
Netscape (e non Internet Explorer). C'è un modo di risolvere la cosa? Devo
passare attraverso il meccanismo delle servlet o cos'altro? Intanto allego
il codice(stupidotto) che ho provato a implementare:
per il lato server:
/**
 * FleetsServer.java
 *
 *
 * Created: 09 Sep 2000 00:00:00
 *
 * @author Fabrizio Sibeni
 * @version 2.0
 */
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.*;
import java.io.*;
public class FServer  {
  public static final int PORT = 6667;
  public void listen() throws Exception {
    // Socket del server
    ServerSocket ss = new ServerSocket(PORT);
    // Ciclo infinito che accetta clienti
    for(;;)
      try {
        Socket s = ss.accept();
        DataInputStream in = new DataInputStream(s.getInputStream());
        DataOutputStream out = new DataOutputStream(s.getOutputStream());
        try {
          out.writeChars("Welcome to the F. Server \n");
          out.writeChars("Come server sono su indirizzo:" +
ss.getInetAddress() + "\n");
          out.writeChars("Come server sono su porta:...:" +
ss.getLocalPort() + "\n");
          System.out.println("Sto accettando una richiesta dall'indirizzo:"
+ s.getInetAddress() + "\n");
          System.out.println("Sto accettando una richiesta dalla porta...:"
+ s.getLocalPort() + "\n");
          String messaggio = new String();
          messaggio = in.readLine();
          System.out.println("Ho ricevuto: " + messaggio + intero +  "\n");
        } catch(Exception e) {
          System.err.println("Error(1)"+e);
        }
        } catch(Exception e) {
          System.err.println("Error(2)"+e);
        }
    }
    public static void main(String[] args) throws Exception {
      FServer s = new FServer();
      s.listen();
    }
  }
}
mentre l'applet si connette in questo modo:
try {
    Socket s = new Socket("localhost",6667);
    DataInputStream in = new DataInputStream(s.getInputStream());
    DataOutputStream out = new DataOutputStream(s.getOutputStream());
    out.writeLine("Prova di connessione");
} catch(Exception e) {
    System.err.println("Error(1)"+e);
}
Ringrazio chiunque mi possa dare una mano...
Fabrizio Sibeni

dei socket, e che a sua volta gira le richieste ai vari database...
Ti consiglio di passare alle servlet asap.
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)
|

 wrote in message
news:39c078de.659508@martines...




Tralasciando dettagli :-), per fare una POST da un'applet puoi usare questo codice:
  URLConnection con = servlet.openConnection();
  con.setDoInput(true);
  con.setDoOutput(true);
  con.setUseCaches(false);
  con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Se hai bisogno di altro, fammi sapere via NG!
Ciao,
    Bruno.


 Bye

 
wrote:




Ciao Bruno,
io in merito alla comunicazione applet-servlet ti avevo gia' chiesto
aiuto qualche tempo fa, non so se ti ricordi, in pratica avevo dei
problemi nella risposta della servlet verso l'applet. (In pratica
perdevo pezzi del messaggio.) All'inizio avevo inputato il problema alla
velocita' della rete, visto che in intranet mi funzionava e in internet
no. Ma la cosa effettivamente era un po' stranuccia. Poi mi sono accorto
che il tutto dipendeva solo dal browser (o ancora meglio credo dalla
JVM) in uso dal client.
Volevo pero' richiederti una cosa, a te o a chi ha voglia di rispondere,
e' possibile dialogare tra applet-servlet senza dover lanciare terze
parti (RMI o altro) e senza aprire (a mano) socket verso il server ?
Applet e servlet stanno sullo stesso server, ovviamente ! E inoltre che
il tutto funzioni egregiamente a prescindere dal tipo di browser ?
Ringrazio e saluto
Ottavio
Bruno Bossola ha scritto nel messaggio <39c1cf4e.88323873@martines>...


E inoltre che il tutto funzioni egregiamente a prescindere dal tipo di browser ?
Beh, con IE 4.0x+, NS 4.05+ e Opera 3.60+ non ho mai riscontrato problemi, sui browser di
generazione precedente... beh, non ho mai provato! Tu usi questi?


    Bruno.
Ciao, scusa se non ho risposto prima, ma ero un po' impegnato. Un
esempio ? Mah, magari. Comunque ultimamente le cose sembrano funzionare
un po' meglio. Quando ho un attimo di tempo ti alleghero' un paio di
pezzetti di codice per farti vedere come faccio, e se ti andra', magari
mi dirai dove sbaglio.
Per quanto riguarda i browser, no, direi che sotto a IE4 non vado. Una
curiosita', ma sui tuoi client, installi il plugin per java 2 ?
Purtroppo io non posso fare per adesso delle prove significative perche'
i client dove ho installato questa procedura sono tutti un po'
incasinati, e non lo faccio per lavoro, quindi non ho molto tempo da
dedicarci ! Io lavoro col mitico Cobol ! :))
Ciao e grazie
Ottavio