h1jack3r
27-01-2008, 16:27
Vi espongo brevemente il mio problema.
Ho una applicazione Java (una applet) che all'avvio si deve connettere ad un server. Nel frattempo deve aprire un ServerSocket al quale altre applet si devono connettere per potersi scambiare messaggi direttamente senza farli passare dal server.
Una volta fatta partire la GUI dell''applet la faccio connettere al server e faccio partire il ServerSocket in un altro thread. Lo metto in un while(1), ma l'applicazione principale non va in parallelo e si blocca sul ServerSocket.
Un po' di codice per farvi capire meglio
//connetto al server
socket = new Socket("127.0.0.1", 7770);
//Stream di byte da passare al Socket
os = new DataOutputStream(socket.getOutputStream());
is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//faccio partire il thread per ricevere e comunicare con il Server
startReceiveThread();
//creo il server
JChatServer1 serverChat = new JChatServer1();
//pezzi di codice del server, quando lo creo entra qui
while (1)
{
client = serverSocket.accept();
getClientInfo(client);
startListeningSingleClient(client);
}
private void startListeningSingleClient(Socket client)
{
Thread t = new Thread (new ParallelServer(client));
t.start();
}
In teoria anche il server dovrebbe essere gestito con i Thread ma mi si blocca in quel while(1) e non restituisce il controllo all'applicazione.
idee?
Forse dovrei mettere direttamente all'inizio
JChatServer1 serverChat = new JChatServer1();
in un thread, ma come si fa?
scusate ma sono n00b in java :)
Ho una applicazione Java (una applet) che all'avvio si deve connettere ad un server. Nel frattempo deve aprire un ServerSocket al quale altre applet si devono connettere per potersi scambiare messaggi direttamente senza farli passare dal server.
Una volta fatta partire la GUI dell''applet la faccio connettere al server e faccio partire il ServerSocket in un altro thread. Lo metto in un while(1), ma l'applicazione principale non va in parallelo e si blocca sul ServerSocket.
Un po' di codice per farvi capire meglio
//connetto al server
socket = new Socket("127.0.0.1", 7770);
//Stream di byte da passare al Socket
os = new DataOutputStream(socket.getOutputStream());
is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//faccio partire il thread per ricevere e comunicare con il Server
startReceiveThread();
//creo il server
JChatServer1 serverChat = new JChatServer1();
//pezzi di codice del server, quando lo creo entra qui
while (1)
{
client = serverSocket.accept();
getClientInfo(client);
startListeningSingleClient(client);
}
private void startListeningSingleClient(Socket client)
{
Thread t = new Thread (new ParallelServer(client));
t.start();
}
In teoria anche il server dovrebbe essere gestito con i Thread ma mi si blocca in quel while(1) e non restituisce il controllo all'applicazione.
idee?
Forse dovrei mettere direttamente all'inizio
JChatServer1 serverChat = new JChatServer1();
in un thread, ma come si fa?
scusate ma sono n00b in java :)