IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

Applet + socket


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut Applet + socket
    Bonsoir,

    Je voudrais savoir si il y ' avait un moyen de pouvoir faire communiquer une applet cliente avec des sockets ?
    Des que je lance mon applet que je démarre mon serveur , j ' ai sans cesse un "access denied" alors que ca marche parfaitement sur ma JVM en local.

    Que dois je faire afin de résoudre ce problème ?( j ' ai pour l ' instant testé uniquement avec du html et pas encore avec du jsp)

    Merci de votre aide

    Ma classe socket
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import java.io.*;
    import java.net.*;
    public class Serveur {
     
    	private final static int port=5000;
     
    	public static void main(String[] args) throws IOException {
     
     
    		ServerSocket ss;
    		ss=new ServerSocket(port);
    		Socket s;
    		Communication sal;
     
    		sal=new Communication();
    		Connexion c;
     
    		System.out.println("serveur pret , attente envoi sur le port " +port);
     
    	    while(true){
    		s=ss.accept();
    		c= new Connexion(s,sal);
    		sal.add(c);
    		c.start();
     
    	}
     
    		}
     
    	public int getPort() {
    		return port;
    	}
     
    	}
    mon applet cliente( qui elle même lance d ' autres fenetres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import java.io.*;
     
    import javax.swing.JApplet;
     
     
    public class ClientChat extends JApplet{
     
    public void init(){
    	this.setSize(200,200);
    	Fenetre f;
    	try {
    		f = new Fenetre ("Chat");
    		while(true){
    			//passe les infos aux serveurs
    			BufferedReader in;
    		    in=f.getIn();
    			f.recevoir();
     
    		}
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
     
     
     
    }
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    une applet ne peux pas

    créer des socket serveur (ça, c'est si tu envisageait de mettre ton premier code dans une applet, mais j'en doute, ca n'aurait pas de sens)
    Se connecter (client donc) via les socket à un serveur autre que celui dont est originaire la page dans laquelle elle se trouve (c'est pour éviter des pages pirates qui lanceraient des applets destinées à servir de relai pour du spam par exemple )


    Donc dans ton cas, il suffit que ton serveur tourne sur le même serveur que celui d'où viens ta page web. Si ça ne marche toujours pas, poste nous l'exception + le code associé à la ligne de l'exception (on vois rien de ce que fait ton client dans ton code)


    Aussi, les JSP n'ont rien à voir avec les applet. Les JSP sont une technologie coté serveur, les applets une technologie coté client

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    Salut,

    Tout d ' abord , merci de ton aide et de m ' avoir répondu .
    En fait , mon projet est un chat web qui doit communiquer par socket dont je test le fonctionnement en local pour l ' instant(donc sur mon propre pc en tant que serveur)
    Ca fonctionne parfaitement sous la JVM de java , mais avec des applets rien a faire , ca fait 3 jours que je bloque dessus.

    voici l erreur générée lors du lancement de l ' applet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:5000 connect,resolve)
    	at java.security.AccessControlContext.checkPermission(Unknown Source)
    	at java.security.AccessController.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkPermission(Unknown Source)
    	at java.lang.SecurityManager.checkConnect(Unknown Source)
    	at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
    	at java.net.Socket.connect(Unknown Source)
    	at java.net.Socket.connect(Unknown Source)
    	at java.net.Socket.<init>(Unknown Source)
    	at java.net.Socket.<init>(Unknown Source)
    	at ChatServeur.<init>(ChatServeur.java:59)
    	at FenetreServeur.<init>(FenetreServeur.java:17)
    	at ServeurChat.init(ServeurChat.java:14)
    	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Exception : java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:5000 connect,resolve)
    la classe qui lance la socket

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class ChatServeur extends JPanel{
     
    	private BufferedReader in;
    	private PrintStream out;
           private Serveur serveur=new Serveur();
    	private final static String ip = "localhost";
     
     
    	public ChatServeur(FenetreServeur f, LoginServeur l)throws IOException{
    		super();
    		fene=f;
    		log=l;
    	    Socket s; 
     
     
    	    s = new Socket(ip,serveur.getPort());
    		in = new BufferedReader( new InputStreamReader(s.getInputStream()));
    	    out = new PrintStream( s.getOutputStream());
    Merci beaucoup pour ton aide

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    quelle est l'url de la page où se trouve l'applet?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    je la lance via mon fichier html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file:///E:/Mes%20documents/workspace/Chat%20Serveur/index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     
       <body style="margin:auto;">
     
    	<div style="width:320px;margin:auto;margin-top:100px;border:5px solid black">
    		<applet codebase="bin/" code="ServeurChat.class" height="80" width="300" hspace="10" vspace="10">
    		<param name="ipServeur" value="localhost">
    	<param name="portServeur" value="5000">
    		</applet>
    	</div>
     
       </body>
    </html>
    Merci de ton aide

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut Question indispensable
    Bonjour,
    Est-ce que vous avez signé votre code ?
    En effet, utiliser des sockets, c'est utiliser un composant matériel, la carte réseau. Hors, l'accès à un équipement matériel par une applet est restreint par la sécurité du plugin java du navigateur. Ce dernier n'autorise par défaut aucun accès. En clair, une applet non signée ne peut qu'agir sur les éléments de la page qui la contient, point. Pour aller plus loin il faut impérativement créer un certificat de signature et l'utiliser pour signer son code. Ainsi, lorsque l'utilisateur tente d'exécuter un code d'applet qui va chercher à utiliser sa carte réseau pour réaliser une connexion de socket, le certificat de signature lui sera présenté afin qu'il puisse identifier l'auteur du code et décider de lui faire confiance ou pas en confirmant ou infirmant l'exécution du code. Et c'est bien évidement dans la seule condition d'acceptation que l'applet pourra alors créer un socket, qu'il soit client ou serveur.
    Ce qui me fait penser à cela c'est la lecture du code de votre erreur. Il s'agit bien d'une SecurityException déclenchée par le plugin java de sun de votre navigateur.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Applet - Socket - Serveur
    Par matthieu637 dans le forum Applets
    Réponses: 0
    Dernier message: 09/03/2010, 23h35
  2. applet socket serveur + connexions clientes
    Par wilv8 dans le forum Applets
    Réponses: 2
    Dernier message: 30/10/2008, 10h04
  3. [Applet]Connexion base de données (socket)
    Par Néo-Tony dans le forum Applets
    Réponses: 8
    Dernier message: 26/07/2007, 09h46
  4. Réponses: 9
    Dernier message: 20/01/2006, 12h04
  5. [SOCKET] connexion client serveur avec applet
    Par kaiser2003 dans le forum Applets
    Réponses: 2
    Dernier message: 06/10/2004, 22h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo