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)