PDA

Visualizza la versione completa : [JAVA] Conflitto tra socket e JFrame


bobc
07-03-2006, 12:10
ciao,

da un paio di giorni ho un problema che non riesco a risolvere.
Ho creato questa classe lato server(che contiene un socket che accetta connessioni in ingresso e sta sempre in ascolto da quando viene creata una nuova istanza di questa classe...).
Questa classe (illustrata sotto in pseudocodice) va ad integrare un programma in locale formato da una interfaccia grafica (una jframe).

Questa una parte di codice della classe contenente il socket:


import java.net.*;
import java.io.*;

public class ServerProva{
public boolean connVal;
public boolean istruzioniFlag=false;
public ServerSocket server;
public Socket client;
public InputStream input;

public ServerProva(){
connVal=false;
try{
while(!connVal){
server=new ServerSocket(3575);
client=server.accept();
if(!(connessioneValida(leggiInput()))){
OutputStream os=client.getOutputStream();
String segnale=new String(" ");
byte[]buf=new byte[1];
buf=segnale.getBytes();
os.write(buf);
chiudiConnessione();
}
else{
//se la connessione valida scrivi sul socket
connVal=true;
}
...
}

Dal main si chiama una nuova istanza sia della classe derivata da JFrame che della classe scritta qui sopra.
Il programma deve permettere di eseguire operazioni sia in locale che in remoto, ma il fatto che quando il socket sta in ascolto, la jframe , come dire, impallata; quando poi arriva l'input e il socket si chiude, la jframe torna a funzionare bene.

:dh:

Chi pu darmi una mano?

Grazie.

denat
07-03-2006, 12:57
Devi far implementare Runnable dalla classe ServerProva in modo che ogni istanza sia un Thread separato.
ciao
mArco

bobc
07-03-2006, 13:01
Devi far implementare Runnable dalla classe ServerProva in modo che ogni istanza sia un Thread separato.

ok, prover con Runnable.

A presto.

bobc
07-03-2006, 16:04
Funziona perfettamente. Grazie! :yuppi:

Loading