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(); }
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(); }
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 }
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 }
/// <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; } } }
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 { } }
public void enviarMensaje(PaqueteEdit msg) { paquetesEspera.Enqueue(msg); paquetesPendientes.Set(); }