17/10/12 17:54
Roby94
Salve, ho dovuto fare una piccola divergenza dai mio calssico sviluppo PHP per creare un server da utilizzare con i websocket di HTML5, lo sviluppo sembra andare bene avrei solo un piccolo problema quando cerco di fermare il server:
Quando eseguo il metodo stop l'applicazione va in blocco nel punto che ho segnato, me ne accorgo dal fatto che il messaggio di conferma dell' arresto del server non viene stampato. Sono nuovo dei thread e credo che la mancanza di esperienza mi penalizzi un po, ho provato anche a interrompere il ciclo while ma sembra che esso continui ad oltranza probabilemnte perche si trova in un thread separato. Mi sapete aiutare?
P.S. Se ho fatto qualche errore madornale nello sviluppo del server me lo potreste segnalare, mi fareste un grnade piacere
Grazie in anticipo
//avvio[...]// static void start() { if (serverActive == false) { try { server.Start(); listenerThread = new Thread(new ThreadStart(listener)); listenerThread.Start(); serverActive = true; Console.WriteLine("Il server è stato avviato."); } catch { Console.WriteLine("Errore nell' avvio del server."); } } else Console.WriteLine("Il server è gia avviato."); } static void stop() { if (serverActive == true) { foreach (Client c in clients) { try { c.Send("Il server si sta spegnendo. Arrivederci!"); c.client.Close(); } catch { } } clients.Clear(); listenerActive = false; listenerThread.Abort();//L'errore sta qua server.Stop(); serverActive = false; Console.WriteLine("Il server è stato arrestato."); } else Console.WriteLine("Il server non è in esecuzione."); } static void listener() { listenerActive = true; while (listenerActive) { Socket client = server.AcceptSocket(); if (clients.Count < 2) { clients.Add(new Client(client)); Console.WriteLine("Utenti connessi: " + clients.Count); } else { client.Send(ascii.GetBytes("Server Pieno!")); Console.WriteLine(client.RemoteEndPoint.ToString() + " connessione rifiutata per limite utenti"); client.Close(); } Thread.Sleep(10); } } //Classe Client[...]//
Quando eseguo il metodo stop l'applicazione va in blocco nel punto che ho segnato, me ne accorgo dal fatto che il messaggio di conferma dell' arresto del server non viene stampato. Sono nuovo dei thread e credo che la mancanza di esperienza mi penalizzi un po, ho provato anche a interrompere il ciclo while ma sembra che esso continui ad oltranza probabilemnte perche si trova in un thread separato. Mi sapete aiutare?
P.S. Se ho fatto qualche errore madornale nello sviluppo del server me lo potreste segnalare, mi fareste un grnade piacere
Grazie in anticipo
aaa