private void LeerSocket(IPEndPoint IP) { byte[] buffer = new byte[255]; ClienteModelo cliente = clientesDictionary[IP]; bool conexion = cliente.GetConexion(); while (conexion) { try { int cantidadRecibida = cliente.GetSocket().Receive(buffer, buffer.Length, SocketFlags.None); bool vacio = cantidadRecibida > 0; if (vacio) { string datosRecibido = Encoding.UTF8.GetString(buffer, 0, cantidadRecibida); this.DatosRecibidos.Invoke(this, new servidorEvento(datosRecibido, IP)); } else { this.ConexionTerminada.Invoke(this, new cambioConexion(IP)); conexion = false; } } catch { this.ConexionTerminada.Invoke(this, new cambioConexion(IP)); conexion = false; } } clientesDictionary.TryRemove(IP, out cliente); }
public void EnviarDatosParticular(string datos, IPEndPoint ip) { ClienteModelo buscado = clientesDictionary.First(cliente => cliente.Key == ip).Value; if (buscado != null) { byte[] mensaje = Encoding.UTF8.GetBytes(datos); buscado.GetSocket().Send(mensaje); } else { throw new Exception($"no existe el cliente con ip: {ip}"); } }