Interaction entre Thread et JFrame

cs_jpegg Messages postés 10 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 27 mars 2003 - 21 janv. 2003 à 22:56
cs_akito Messages postés 4 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 26 mai 2003 - 26 mai 2003 à 15:03
Bonsoir,

J ai un probleme pour l'interaction entre un Thread et une interface Graphique. J ai crée une classe heritant d un Thread que j ai appelé Serveur ( cette classe ouvre un serveur a partir d un SocketServer). Cette classe fonctionne tres bien.( elle permet de se connecter avec un Client)

L interface graphique, qui herite de JFrame, fonctionne aussi tres bien lorsque je crée une nouvelle Interface Graphique sans lancer un Serveur: elle reagi normalement , et les boutons sont cliquable.

Par contre, lorsque le lie les deux par une classe principale, mon Serveur est bien actif, mais mon interface Graphique ce bloque (seulement une fenetre grise, impossible de la fermée, aucun bouton ne s affiche).

voici ce que je fais lorsque ca se bloque:

new IGServeur();
new Serveur();

Apparemment, le Thread de mon Serveur bloque mon interface Graphique. Je ne sais plus comment faire interagir ces deux classes. Aidez moi, s il vous plais.

Merci d avance

7 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
21 janv. 2003 à 23:25
On va avoir besoin de savoir comment est construite la classe IGServeur, pour savoir ou dans ta gestion du thread tu t'es trompé.
JHelp
0
cs_jpegg Messages postés 10 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 27 mars 2003
21 janv. 2003 à 23:31
En fait, il n y a pratiquement rien dans ma classe IGServeur, il n y a que la definition de la taille de ma JFrame, et quelques boutons. Je pensais plutot que ca venais de la classe Serveur.
0
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
22 janv. 2003 à 06:48
C'est possible, mais donne un peu de code nous ne sommes pas devin.
JHelp
0
cs_jpegg Messages postés 10 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 27 mars 2003
23 janv. 2003 à 13:02
Toujours sur le meme probleme d interaction entre un Thread et une interface Graphique. Je pensais avoir trouve une solution en suspendant mon appel a la methode accept() sur mon ServerSocket en faisant:

_sock = new ServerSocket (port);
_sock.setSoTimeout(500);

Il se trouve que cette methode setSoTimeout(int timeout) arrete definitivement mon serveur. Je tiens a preciser que j ai bien gere les Exception (InterruptedIOException dans le cas present).

Peut etre ai je mal utilise cette methode? Si vous voyez une solution pour pouvoir suspendre pendant un temps la methode accept() sur mon SocketServer, je suis preneur.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
23 janv. 2003 à 13:45
Logiquement tu n'as pas besoin de suspendre le accept(), du moins si tu as bien fait les choses.
Montre nous comment tu as fais.
Comment trouver une erreur sans le code ?
JHelp
0
cs_akito Messages postés 4 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 26 mai 2003
26 mai 2003 à 14:59
-------------------------------
Réponse au message :
-------------------------------

> Logiquement tu n'as pas besoin de suspendre le accept(), du moins si tu as bien fait les choses.
> Montre nous comment tu as fais.
> Comment trouver une erreur sans le code ?
> JHelp
0
cs_akito Messages postés 4 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 26 mai 2003
26 mai 2003 à 15:03
-------------------------------
Réponse au message :
-------------------------------

> Logiquement tu n'as pas besoin de suspendre le accept(), du moins si tu as bien fait les choses.
> Montre nous comment tu as fais.
> Comment trouver une erreur sans le code ?
> JHelp

Bonjour Moi g le meme probleme. alors g une methode Run() qui lance mon server ( qui ecoute sur un port et recoie continuellement un stream " ce sont des logs genere par un firewall"
et mon applet ce fige a se moment là. alors je c pas ou mettre un thread pour eviter cela. voici en revanche un peu de code.

public void Run() throws Exception {


server = new DatagramSocket(port);
thePacket = new DatagramPacket(buffer, buffer.length);

//boucle infinie
while (true)
{
// recupere le packet
server.receive(thePacket);

byte[] data = thePacket.getData();

// Extraction d'info provenant du datagramm recu

int offset = thePacket.getOffset();
int size = thePacket.getLength();
InetAddress address = thePacket.getAddress();
int remotePort = thePacket.getPort();

String message = new String(data, offset, size);

// affiche le message
textarea.setText(address+message+data);

// restaure le buffer
thePacket.setLength(buffer.length);
}

}

///////////////////////////////////////////////////////////////
public void actionPerformed(ActionEvent evt)
{
////////////////////
//GERER LES EVENTS//
////////////////////

if (evt.getSource()==MenuItem)
{
try
{
Run();
}
catch(Exception e)
{
e.printStackTrace();
}
}
0
Rejoignez-nous