/** * <summary>Envoie un model au client</summary> * <param name="data">Model qui implémente <see cref="IModelReseau"/> à envoyer</param> * <param name="flux">Flux <see cref="NetworkStream"/> à envoyer</param> * <returns>true si tout s'est bien passé, false sinon</returns> */ protected virtual async Task <bool> SendAsync(IModelReseau data, NetworkStream flux) { try { await Task.Run(() => { BinaryWriter binaryWriter = new BinaryWriter(flux); // converti le flux en binaire byte[] byteData = Serialise.ObjectToByteArray(data); binaryWriter.Write(byteData); // envoie le model sous forme de bytes[] Catcher.LogInfo($"Message de longueur {byteData.Length} envoyé"); }); return(true); } catch (Exception e) { Catcher.LogError(@"Impossible d'envoyer un message TCP : " + e.Message); return(false); } }
/** * <summary>Envoie un message en UDP</summary> * <param name="model">Données à envoyer, implémentant <see cref="IModelReseau"/></param> * <param name="destination"><see cref="IPEndPoint"/> Données sur la destination des données (IP et port)</param> */ public async Task SendAsync(IModelReseau model, IPEndPoint destination) { byte[] data = Serialise.ObjectToByteArray(model); await _udp.SendAsync(data, data.Length, destination); }
/** * <summary>Envoie un model au client</summary> * <param name="data">Model qui implémente <see cref="IModelReseau"/> à envoyer</param> * <returns>true si tout s'est bien passé, false sinon</returns> */ public async Task <bool> SendAsync(IModelReseau data) { return(await SendAsync(data, _flux)); }