예제 #1
0
        /**
         * <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);
            }
        }
예제 #2
0
        /**
         * <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);
        }
예제 #3
0
 /**
  * <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));
 }