PDA

Visualizza la versione completa : [JAVA] Blocco programma dopo chiamata funzione


cala87
26-12-2005, 16:33
Come mai mi si blocca il programma chiamando questa funzione???


public void AvviaServer()
{
int Porta = 40;

try
{
try
{
Porta = Integer.parseInt(setPorta.getText());
}
catch(Exception e)
{
if(finErrore == null)
finErrore = new Errore(Server.this,"Si deve inserire un numero!!");
finErrore.setVisible(true);
}

if(Porta <= 0 || Porta > 65535)
{
if(finErrore == null)
finErrore = new Errore(Server.this,"Valori ammessi tra 1 e 65535");
finErrore.setVisible(true);
}

ServerS = new ServerSocket(Porta);
Scrivi("Server attivo sulla porta: " + Porta);

while(true)
{
Scrivi("Attesa delle connessioni");
SocketIngresso = ServerS.accept();

TokenIndirizzo = new StringTokenizer(SocketIngresso.getInetAddress().to String(),"/");
Indirizzo = TokenIndirizzo.nextToken();

Scrivi("Connesso utente " + IDSocket + " @ " + Indirizzo);
}
}
catch(IOException e)
{
Scrivi("Caduta della connessione dell'utente " + (IDSocket-1) + " @ " + Indirizzo);
}
catch(Exception e)
{
if(finErrore == null)
finErrore = new Errore(Server.this,"Errore nell'apertura del server");
finErrore.setVisible(true);
}
}

cala87
26-12-2005, 16:56
Dimenticavo...Questo Ŕ un programma client server e questa funzione dovrebbe attivarmi il server, le variabili sono dichiarate in modo corretto e la funzione scrivi consente di scrivere del testo in una jtextarea..in fase di compilazione mi riladcia un errore strano: "unchecked or unsafe operations" --> cosa significa tralasciando il significato letterale??? grazie della vostra attenzione

FelixR
26-12-2005, 20:33
Magari dicci in che riga da l'errore.
Forse stai usando una porta sotto la 1024?
Quelle non le puoi usare, sono le porte conosciute.

cala87
27-12-2005, 10:56
Ciao..Non posso darti la riga d'errore perchŔ questo Ŕ un warning non un errore di sintassi; per quanto riguarda la porta inferiore a 1024 ti dico che ho giÓ provato su un altro programma a inserire, ad esempio la porta 25 o 200, senza avere nessun problema..(Dimenticavo..Utilizzo BlueJ)..Grazie

FelixR
27-12-2005, 11:11
ricompila con l'opzione -Xlint:unchecked per avere pi¨ dettagli sui warning e facci sapere

cala87
27-12-2005, 11:22
Scusa la mia ignoranza ma non so come si compila in quella maniera...

dannie
27-12-2005, 15:39
Scusa l'intromissione, ma cosa intendi con "si blocca"? Te lo chiedo perchŔ la funzione che hai postato contiene (giustamente) un while(true).... magari posta anche come la chiami...

FelixR
27-12-2005, 16:12
javac -Xlint:unchecked NomeFile.java

battlehorse
27-12-2005, 21:37
In effetti anche a me sembra normale che il programma si blocchi ... del resto la chiamata :

SocketIngresso = ServerS.accept();

e' bloccante (vedi javadoc) in attesa del primo socket che viene aperto.
Appena si sblocca perche' viene aperto un socket, il while(true) non fa altro che riportare sulla stessa chiamata...

cala87
28-12-2005, 00:11
Per "si blocca" intendo dire che il programma va in panne, questa funzione la chiamo utilizzando un bottone o un elemento di un men¨ e nel momento del click il programma Ŕ come se terminasse (un p˛ come si bloccano a volte i normali programmi come Word o Excel) per sbloccarlo devo per forza resettare la Java Virtual Machine..Aiutatemi perchŔ Ŕ un programma didattico e devo portarlo entro metÓ Gennaio..Grazie per la disponibilitÓ

Loading