Exemplo n.º 1
0
        public void escucharServidor()
        {
            NetworkStream stream = clienteAsociado.GetStream();
            bool          vivo   = true;

            editorIniciado.WaitOne();
            while (vivo)
            {
                try
                {
                    if (stream.DataAvailable)
                    {
                        object      msg  = formatbin.Deserialize(stream);
                        PaqueteEdit pack = msg as PaqueteEdit;
                        pushRecibido(pack);
                    }
                    if (!clienteAsociado.Connected)
                    {
                        vivo = false;
                    }
                }
                catch
                {
                    vivo = false;
                }
            }
            //ConexionPerdida();
            this.eliminar();
        }
Exemplo n.º 2
0
        private void enviarMensajeTh()
        {
            bool vivo = true;

            while (vivo)
            {
                paquetesPendientes.WaitOne();
                if (paquetesEspera.Count > 0)
                {
                    try
                    {
                        PaqueteEdit msg = paquetesEspera.Dequeue();
                        msg.Firma = this.login;
                        NetworkStream stream = clienteAsociado.GetStream();
                        formatbin.Serialize(stream, msg);
                    }
                    catch (System.Runtime.Serialization.SerializationException)
                    {
                        throw new Exception();
                    }
                    catch
                    {
                        vivo = false;
                    }
                }
                else
                {
                    paquetesPendientes.Reset();
                }
            }
            ConexionPerdida();
            this.eliminar();
        }
Exemplo n.º 3
0
        public Server()
        {
            Clientes.Capacity = 4;
            listenerServer    = new TcpListener(IPAddress.Any, ClientPort);
            listenerServer.Start(maxConn);
            alertaHandler += Server_alertaHandler;

            ThreadEscucha = new Thread(RecibirConexiones);
            ThreadEscucha.IsBackground = true;
            ThreadEscucha.Start();
            PaqueteEdit pq = new PaqueteEdit(tipoMensaje.AddCapa);

            pq.obj = "Capa base";
            HistoricoMensajes.Add(pq);
            mensajeRecibido += pushClientes;

            #region
            //NetworkStream ns = cli.GetStream();
            //BinaryFormatter bf = new BinaryFormatter();
            //Console.WriteLine("Esperando conn");
            //while (true)
            //{
            //    string ms = Console.ReadLine();
            //    var mensaje = new msg(ms);
            //    bf.Serialize(ns, mensaje);
            //    Console.WriteLine("enviado obj con meensaje");
            //}
            //IPEndPoint endPointServer = null;
            //try
            //{
            //    endPointServer = new IPEndPoint(IPAddress.Any, extClientPort);
            //    socketServidor = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //    socketServidor.Bind(endPointServer);
            //    socketServidor.Listen(4);
            //}
            //catch (SocketException)
            //{
            //    return false;
            //}
            //listenerServer = new TcpListener(IPAddress.Any, extClientPort);

            //listenerServer.Start(maxConn);

            //Socket Socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //IPEndPoint Ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),8000);
            //Socket1.Bind(Ep);
            //Socket1.Listen(8000);
            //Socket1.Accept();
            //Socket1.Send(new byte[8]);
            //TcpListener sv = new TcpListener(IPAddress.Parse("127.0.0.1"),800);
            //sv.Start();
            //TcpClient cliente = sv.AcceptTcpClient();
            //NetworkStream Flujo = cliente.GetStream();
            #endregion
        }
Exemplo n.º 4
0
        private void escucharCliente(object cli)
        {
            clienteSV     cliente = cli as clienteSV;
            NetworkStream stream  = cliente.ClienteTCP.GetStream();
            bool          vivo    = true;

            try
            {
                if (cliente.nuevo)
                {
                    alerta("[i] Sincronizando cliente nuevo " + cliente.nombre + '\n');
                    syncCli(cliente);
                }
            }
            catch
            {
                vivo = false;
            }
            alerta("[i] Cliente de nombre " + cliente.nombre + " iniciado" + '\n');
            while (vivo)
            {
                try
                {
                    if (stream.DataAvailable)
                    {
                        object      msg  = formatbin.Deserialize(stream);
                        PaqueteEdit pack = msg as PaqueteEdit;
                        if (!(pack.Tipo == tipoMensaje.Ping))
                        {
                            mensajeRecibido(pack);
                        }
                    }
                    if (!cliente.ClienteTCP.Connected)
                    {
                        vivo = false;
                    }
                }
                catch
                {
                    vivo = false;
                }
            }
            eliminarCliente(cliente);
            //Eliminar al cliente
        }
Exemplo n.º 5
0
        /// <summary>
        /// Permanentemente envia paquetes al servidor, si no hay respuesta, elimina todo
        /// </summary>
        void timPing()
        {
            bool vivo = true;

            while (vivo)
            {
                if (this.thEnvio.IsAlive && this.thEnvio.IsAlive)
                {
                    PaqueteEdit pping = new PaqueteEdit(tipoMensaje.Ping);
                    this.enviarMensaje(pping);
                    Thread.Sleep(tout);
                }
                else
                {
                    ConexionPerdida();
                    vivo = false;
                }
            }
        }
Exemplo n.º 6
0
 private void pushClientes(PaqueteEdit msg)
 {
     try
     {
         lock (Clientes)
         {
             foreach (clienteSV cli in Clientes)
             {
                 if (msg.Firma != cli.nombre)
                 {
                     NetworkStream stream = cli.ClienteTCP.GetStream();
                     formatbin.Serialize(stream, msg);
                 }
             }
         }
         HistoricoMensajes.Add(msg);
     }
     catch
     {
     }
 }
Exemplo n.º 7
0
 public void enviarMensaje(PaqueteEdit msg)
 {
     paquetesEspera.Enqueue(msg);
     paquetesPendientes.Set();
 }