private void Escuchar() { try { while (!cerrado) { Conversacion c = new Conversacion(); c.puerto = _servidor.AcceptSocket(); c.cerrado = false; c.proceso = new Thread(Hablar); //Configurar conversación int key = CalcularClave(); c.proceso.Start(key); Procesos.Add(key, c); OnNuevaConexion(c.puerto.RemoteEndPoint.ToString(), key); } } catch (Exception ex) { } finally { //Fin servidor } }
private void Hablar(Object pos) { Conversacion actual = null; try { actual = Procesos[(int)pos]; while (!actual.cerrado) { int tam = actual.puerto.ReceiveBufferSize; byte[] buff = new byte[tam]; actual.puerto.Receive(buff, tam, SocketFlags.None); String datos = ProcesarBytes.EncodeBytes(buff); //Evento datos recibidos OnDatosRecibidos(datos, (int)pos); } } catch (Exception ex) { } finally { OnConexionTerminada(actual.puerto.RemoteEndPoint.ToString()); actual.puerto.Close(); actual.Cerrar(); //Conexion Terminada } }