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

    [JAVA datagram multicast socket]

    ciao ragazzi sto cercando di fare girare un socket su una applet di una pagina web

    si tratta di socket datagram multicast, che permette la comunicazione tra dei riceventi e un mandante.

    se faccio girare il socket ricevente su un main da prompt e lo stesso il mandante (da un altro prompt), la comunicazione avviene.

    io voglio pero che il ricevente deve girare su una applet di una pagina web, ma quando faccio il comando da prompt "appletviewer index.html" mi da il seguente messaggio:

    ************************************************** ******
    java.security.AccessControlException: access denied (java.net.SocketPermission 230.0.0.9 connect,accept,resolve)
    at java.security.AccessControlContext.checkPermission (AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(Acc essController.java:546)
    at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
    at java.lang.SecurityManager.checkMulticast(SecurityM anager.java:1188)
    at java.net.MulticastSocket.joinGroup(MulticastSocket .java:269)
    at ClassApplet.start(ClassApplet.java:35)
    at sun.applet.AppletPanel.run(AppletPanel.java:464)
    at java.lang.Thread.run(Thread.java:619)
    ************************************************** ***************



    vi posto il codice della applet:

    ************************************************** ********
    // Java Document
    import java.io.*;
    import java.net.*;
    import java.util.*;

    import java.applet.Applet;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.Socket;
    import java.net.URL;

    import java.applet.*;
    import java.awt.*;

    public class ClassApplet extends Applet{


    public void start() {

    try {

    MulticastSocket socket = new MulticastSocket(5009);


    try {


    super.start();
    System.out.println("Eseguito public void start()");

    InetAddress group = InetAddress.getByName("230.0.0.9");
    System.out.println("Eseguito inet");

    socket.joinGroup(group);

    byte[] buf = new byte[255];
    DatagramPacket packet;
    System.out.println("datagram()");
    packet = new DatagramPacket(buf, buf.length);

    while(true) {
    System.out.println("while");

    System.out.println("Attesa dal server");
    socket.receive(packet);
    String received = new String(packet.getData());
    String messaggio = received.substring(0,3);


    System.out.println("Messaggio ricevuto dal server: " + messaggio + "a");
    if(messaggio.equals("ref")) {
    //System.out.println("ref");
    }
    }

    } // end try interno

    catch (Exception e) {

    e.printStackTrace();
    socket.close();

    }

    } // end try esterno

    catch (IOException e) {

    e.printStackTrace();


    }


    }

    }
    ************************************************** ***********



    vi posto il codice della pagina index.html

    ************************************************** ***********
    <html>
    <head>
    <title>Applet PrimoApplet</title>
    </head>
    <body>

    <applet code="ClassApplet.class" width=200 height=100>Il tuo browser è vecchio, cambialo!</APPLET>

    </body>
    </html>
    ************************************************** ************

    perche non funziona?

    *AGGIORNAMENTO: se tolgo dal codice della applet la riga "socket.joinGroup(group);" (che permette ad un ricevente di iscriversi ad un multicast) l'esecuzione del codice va avanti fino al while e resta in attesa, ma non riesce a ricevere dal mandante (che faccio partire su un altro prompt)

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [JAVA datagram multicast socket]

    Quando posti del codice usa il tag CODE, altrimenti non si capisce un tubo
    Inoltre Java ha uan sezione tutta sua

    Originariamente inviato da soundsgood
    java.security.AccessControlException: access denied (java.net.SocketPermission 230.0.0.9 connect,accept,resolve)
    at java.security.AccessControlContext.checkPermission (AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(Acc essController.java:546)
    at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
    at java.lang.SecurityManager.checkMulticast(SecurityM anager.java:1188)
    at java.net.MulticastSocket.joinGroup(MulticastSocket .java:269)
    at ClassApplet.start(ClassApplet.java:35)
    at sun.applet.AppletPanel.run(AppletPanel.java:464)
    at java.lang.Thread.run(Thread.java:619)
    Le applet in genere hanno diverse limitazioni. Questo potrebbe esserti utile
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    da questo documento non riesco a capire con l'inglese..

    qualcuno sa risolvere la cosa?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da soundsgood
    da questo documento non riesco a capire con l'inglese..
    Non so che dirti... Nell'informatica senza inglese non vai da nessuna parte!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    in pratica bisogna segnare l'applet per aumentarne i diritti ecc..

    sto seguendo le istruzioni su http://www.mokabyte.it/1998/03/security_JDK12.htm

    ma nelle ultime due istruzioni,

    non ho ben capito cosa devo mettere al posto di "home_diffido"

    Gestione del Policy Ora vediamo come sia possibile gestire i permessi su questi codici. Volendo rilasciare piu' privilegi nelle operazioni sul file system, Diffido potrebbe aggiungere il seguente grant nel file di configurazione personale (ad es. DiffidoPolicy.txt): grant signedBy "NickFido" { permission java.io.FilePermission "*", "read"; permission java.io.FilePermission "/home_Diffido/*", "read,write"; }; Questo grant rilascia i privilegi d'accesso in lettura su tutto il file system di Diffido e in scrittura sulla directory /home_Diffido ai codici firmati da Fido (che nel sistema di Diffido ha l'alias "NickFido") senza preoccuparsi della loro provenienza. Appletviewer Per impostare il proprio file policy quando si usa l’appletviewer basta associare -Djava.policy al nome del file. Ad esempio caricando l’applet di Fido dal suo sito con il comando seguente: appletviewer -J-Djava.policy=/home_Diffido/DiffidoPolicy.txt http://www.fidohost.it/FidoApplet.html si abilita l’applet a scrivere nella directory /home_Diffido e a leggere tutti i file del file system locale. Infine e' previsto l'utilizzo dell'opzione -Djava.policy per settare una propria policy anche per le applicazioni stand-alone.
    sapete che ci devo mettere?

    non ci sta un modo piu facile per aumentare i privilegi e i diritti di una applet?

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.