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 et utilisation de socket


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Applet et utilisation de socket
    Bonjour à tous,
    j'ai réalisé un applet qui me permet d'afficher une vidéo sous la forme d'une succession d'image jpg.
    Ces images sont récupérées via la classe URL sur un script php qui fait l"interface vers une appli C++.

    Je souhaite désormais supprimer cet intermédiaire php pour des raisons évidente de performance. J'ai donc commencé une classe socket pour mon applet. La socket est local donc à priori pas de problème de sécurité:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    public class DPSocket implements Runnable {
     
        private Thread threadSocket = null;
        private Socket m_socket;
        private DataInputStream m_dis;
        private DataOutputStream m_dos;
        private boolean comOk = false;
        private int ticket;
     
        public void openConnexion(String address,int port,int ticket)
        {
            try{
                threadSocket = new Thread(this);
                threadSocket.start();
                m_socket    = new Socket(address, port);
                m_dis       = new DataInputStream(m_socket.getInputStream());
                m_dos       = new DataOutputStream(m_socket.getOutputStream());
                m_socket.setSoTimeout(10000);
                this.ticket = ticket;
            }catch(Exception e){
                System.err.println("Erreur connexion : " + e.getMessage());
            }
        }    
        public void setQuality(int qual)
        {
            char numOrdre = (char)(83);
            try{
                m_dos.writeByte(numOrdre);
                this.sendTicket();
                m_dos.writeInt(qual);
            }catch(Exception e){
                System.err.println("Erreur émission qualité : " + e.getMessage());
            }
        }
        private void sendTicket()
        {
            try{
                m_dos.writeInt(this.ticket);
            }catch(Exception e){
                System.err.println("Erreur envoi ticket : " + e.getMessage());
            }
        }
     
        @Override
        public void run() {
     
        }
    }
    Cette classe est ensuite instanciée comme suis dans ma classe DpJPlayer qui est la classe principale de mon appli (c'est juste un extrait , pour faire plus simple) :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    public class DPJplayer extends Applet implements Runnable
    {
     
        public void init() 
        {
            // Pause pour laisser le temps à la page de se charger. Sinon ordre de requete non exécuté
            try{Thread.sleep(2000);}catch(InterruptedException e){}
     
            Date D 			= new Date();
            dpSocket 		= new DPSocket();
            oldTimestamp 	= D.getTime();
            // Récupération des paramètres
            //...
    		//
     
            //Sans OK , avec marche plus
            dpSocket.openConnexion("localhost", 34000,Integer.parseInt(this.ticket));
            //Définition de la couleur de fond
            setBackground(new Color(207,209,220));
        }
     
        /**
         *Démarrage du thread
         * @Override
         **/
        public void start()
        {
            if(threadPlayer == null)
            {
                threadPlayer = new Thread(this);
                threadPlayer.start();
                stopLecture = false;
            }
        }
     
        /**
         * Execution du programme
         * @return void
         */
        public void run()
        {
            while(threadPlayer!=null && this.stopLecture == false)
            {
                dpSocket.setQuality(10);
    			//Chargement des images
    			// ...
    			//
            }
        }
     
        /**
         * Affichage
         * @param g
         * @return void
         */
        public void paint(Graphics g)
        {
            //
    		//...
    		//Divers manip avant affichage
            g.dispose();
            this.imageloaded = true;
     
        }
     
        public void update(Graphics g)
        {
            paint(g);
        }
    }
    Le problème est qu' à partir du moment ou j'instancie ma classe de socket , mon applet ne fonctionne plus correctement (il n'affiche plus d'image) .

    N'étant pas développeur JAVA , j'ai sans doute loupé quelque chose d'évident mais je n'arrive pas à voir quoi
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 16
    Par défaut
    Bonjour,
    Je ne suis pas un spécialiste mais j'ai lu un article dans une revue qui proposait quelque chose de semblable basé sur un script as3.0 en flash qui transmet les images de la caméra (webcam) sous forme d'un flux encodé à un script php qui décode le flux et enregistre l'image jpg dans un répertoire du serveur web. Donc je me pose la question de savoir si l'applet java qui remplace le script php est capable de décoder le flux reçu pour pouvoir afficher l'image.jpg ? (c'est juste une idée, désolé si je n'apporte pas de solution plus précise, il faudrait voir les possibilités qu'offre java au niveau du décodage du flux reçu)

Discussions similaires

  1. [MFC] Faible utilisation des sockets via les MFC ?
    Par Yellowmat dans le forum MFC
    Réponses: 1
    Dernier message: 25/08/2005, 17h15
  2. récupérer l' IP du client lors d'utilisation de sockets
    Par zegota dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 27/07/2005, 22h27
  3. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 17/05/2005, 14h24
  4. [MFC] Utilisation de sockets
    Par keupon dans le forum MFC
    Réponses: 2
    Dernier message: 28/01/2004, 14h37
  5. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24

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