Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Connessione client-server non fa nulla

    Ciao a tutti sono riuscito a caricare le pagine web con le applet sul sito.
    Ci sono però ancora alcune cose da risolvere. Non riesco a far dialogare un
    client collegato ad internet che apre la pagina web con il server remoto che
    è sul mio pc. Forse ho sbagliato nell'utilizzare le socket. Ho fatto così:

    Ogni volta che un utente si collega crea un nuovo ogetto Client e apre la
    connessione con i relativi flussi

    socket = new Socket("localhost", 7777);
    os = new DataOutputStream(socket.getOutputStream());
    is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    è giusto scrivere localhost come indirizzo?

    Per il server invece creo una serverSocket in ascolto sulla porta 7777

    serverSocket = new ServerSocket(7777);

    Credo che il problema sia localhost... ma non ne sono sicuro...:-). Se
    qualcuno ne sa di più ed è disposto a darmi na mano ne sarei grato.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non è corretto scrivere localhost.
    Devi sapere che per le applet esistono delle limitazioni dovute ai problemi di sicurezza.
    Le applet non possono effettuare particolari operazioni (accedere al FileSystem, collegarsi con DB o aprire connessioni con risorse esterne).
    Ovviamente anche le limitazioni sono state fatte con criterio, per cui è possibile che un'applet effettui quelle operazioni.

    Un'applet per poter effettuare operazioni "a rischio" necessita di una firma digitale.

    Un'applet, però, può anche effettuare queste operazioni senza necessità di firma: l'importante è che queste operazioni vengano effettuate sul server da cui l'applet è stata scaricata. Questo significa che l'applet può aprire una socket verso il server da cui essa è stata scaricata (e, senza firma, solo verso di esso!!).

    Per far questo prova a leggerti la documentazione relativa alle classi URL e Applet, e specialmente il metodo getCodeBase().

    Un esempio per collegarsi ad un server che gira sulla macchina da cui l'applet è stata scaricata è il seguente:
    codice:
    Socket s = new Socket(getCodeBase().getHost(), numPorta);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Credo di non aver capito granchè:-). Scusa la mia ignoranza è la prima volta che mi cimento in problematiche del genere.... Cmq grazie per la celerità della risposta(10 minuti:-O). In particolare non mi è chiaro il discorso l'applet può aprire uan socket verso il server da cui è STATA SCARICATA.
    Che cosa vuol dire scaricare una applet da un server? Io nella mia ingeguità ho lanciato il server che altro non è che un programma dal mio pc(da netbeans per la precisione) ed aprendo in remoto la pagina web con all'interno l'applet non succede nulla, mentre in locale funziona tutto.
    Può gentilmente essere più chiaro esplicitando le tue parole:-). Scusa, grazie,ciao!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quando tu ti colleghi con un sito che ha un'applet, il tuo browser fa qualcosa del genere:

    1) Prende i files dell'applet (i .class per capirci) e li scarica sul tuo PC (nei Temporary Internet Files)
    2) Esegue la JVM del tuo PC e le dice di caricare i .class
    3) Prende l'output della JVM e te lo visualizza sul browser.

    Quindi, per poter eseguire un'applet, essa deve essere scaricata sul PC del client che sta navigando (questo succede con tutto: pagine HTML, immagini, filmati, applet java, applet flash, pdf e tutto quello che vuoi).

    Una volta che l'applet è stata scaricata dal sito (il sito ha un'indirizzo, è un computer come un altro) essa può aprire una socket solo verso il sito stesso (verso il PC da cui è stata scaricata).

    Ad esempio. Se mi collego con il sito www.miosito.it e lì c'è un applet che vuole aprire una socket, lo può fare solo verso il sito www.miosito.it. Quindi, nel PC che ospita il sito, deve esserci il server che attende le connessioni.

    Ho usato appositamente i termini PC e server per distinguere la macchina fisica dal software, visto che questi due termini sono praticamente succedanei.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Perdonami non mi è chiaro....Ho caricato i file .class sullo spazio webHosting gratuito di libero, ho il server che lancio dal mio pc... Cosa intendi per pc che ospita il sito?. Scusa se sto risultando seccante ma ho fatto sempre applicazioni desktop se vuoi aggiungimi nella lista contatti di msn così si parla meglio. Stavo facendo un server di gioco on-line se mi dai una mano te ne sono veramente riconscente. Ciao!

    indirizzo MSN [ email ]edited[ /email ]

  6. #6
    Ciao ho provato con getCodeBase.getHost() ma mi dà errore di compilazione... che librerie devo includere? e cmq non ho ancora capito quando creo la socket lato client cosa ci va come indirizzo?? quello della macchina dove sta il server o quello del client che si connette? più tempo ci penso più mi sento confuso:-).

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ho tolto il tuo indirizzo e-mail (anche se camuffato) per evitare problemi con la tua privacy. Se devi comunicare a qualcuno il tuo indirizzo e-mail personale, fallo tramite i messaggi privati.

    Per quanto riguarda il tuo problema, da quello cheho capito hai uno spazio web non tuo. Questo preclude a priori l'utilizzo di applet che utilizzano socket.
    Come ti ho già spiegato, per far funzionare l'applet devi caricarla sul server che ospita il tuo sito (sullo spazio web di Libero, in questo caso). Quindi, se quell'applet vuole aprire una connessione di rete (una socket) lo può fare solo verso il sito di Libero (e non verso il tuo PC). Questo significa che deve esserci un server (inteso come programma che accetta connessioni) sul PC dello spazio WEB di Libero. E tu non puoi avviare nessun programma sui PC di Libero, visto che non hai accesso ad essi, ma solo ad una directory.

    Per quanto riguarda l'errore di compilazione devi importare i due package
    java.io (per tutte le operazioni di I/O)
    java.net (per tutte le classi per il lavoro in rete).
    Oltre al fatto che l'istruzione che ti ho messo deve essere all'interno di una classe che estende Applet (e quindi necessita del package java.applet)

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Quindi così per essere sicuro e fugare ogni dubbio...Devo quindi aquistare un dominio dove carico il mio sito comprensivo di JApplet,pagine html,file.class risorse varie etc poi non so bene come faccio si che il sito risieda sul mio pc(magari poi mi spieghe come:-) e lancio il programma server sul mio pc.A questo punto come per miracolo dovrebbe andare tutto cosi come va in locale... Sbaglio??
    Ciauzie ancora mi hai dato veramente una grossa mano... Ciao

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Questo esula del tutto dall'area in cui stiamo scrivendo, comunque alcune informazioni di base:

    1) Acquistare un dominio non è sufficiente: il dominio è solo un nome che fa riferimento ad un indirizzo IP. L'indirizzo IP, ovviamente, punta ad una macchina, ad un computer (in realtà punta ad una scheda di rete, ma questi dettagli lasciamoli perdere).

    2) Dal punto 1 si desume che, oltre ad acquistare un dominio, sarebbe necessario acquistare un IP pubblico da assegnare ad un PC, il quale dovrebbe essere a tua disposizione e sempre collegato ad internet.

    Fatto questo, non hai ancora un sito: per avere un sito devi installare sul PC un WebServer (è un programma che ascolta le connessioni sulla porta 80, standard HTML) e costruirti il tuo sito (pagine HTML, PHP, ASP, quello che vuoi).
    Dentro al tuo sito inserirai l'applet (i file .class, che solitamente uploadi nello spazio web) e le pagine HTML che la usano.
    Sempre sullo stesso computer dovrai avere anche i .class della parte server della tua applicazione Java (la tua applicazione Java è composta da due parti: l'applet che è il client e il server che aspetta che qualcuno ci si colleghi) e mandarli in esecuzione (devono rimanere sempre in esecuzione, in attesa che qualcuno si colleghi al tuo sito).

    Come vedi la cosa non è delle più semplici e nemmeno delle più economiche. Anche questo dovrebbe aiutarti a capire perchè non puoi farlo con un dominio tipo quello di Libero: il sito non è ospitato su una macchina a tua disposizione dove poter lanciare il server della tua applet.

    Chiusa questa parentesi OffTopic, torniamo InTopic all'argomento connessioni client/server con applet.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.