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é:
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 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() { } }
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) .
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); } }
N'étant pas développeur JAVA , j'ai sans doute loupé quelque chose d'évident mais je n'arrive pas à voir quoi
Partager