예제 #1
0
        /// <summary>
        /// Wartet auf die nächste Nachricht, die an einen UDP-Client gesendet wird
        /// </summary>
        /// <param name="client">Der UDP-Client, der auf eine Nachricht wartet</param>
        /// <returns>Eine neue SMLP-Message</returns>
        public static SMLPMessage ReadNextMessage(UdpClient client)
        {
            SMLPMessage msg = new SMLPMessage();
            IPEndPoint  ep  = new IPEndPoint(IPAddress.Any, 0);

            byte[] data = client.Receive(ref ep);
            msg.SenderID      = BitConverter.ToInt16(data, 0);
            msg.LocalReceiver = BitConverter.ToInt16(data, 2);

            msg.Data = new byte[data.Length - 4];
            Array.Copy(data, 4, msg.Data, 0, msg.Data.Length);
            return(msg);
        }
예제 #2
0
 /// <summary>
 /// Verarbeitet ankommende SMLP-Nachrichten
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="msg"></param>
 private void Connection_SMLPMessageReceived(object sender, Protocol.SMLPMessage msg)
 {
     if (msg.LocalReceiver == SMLPMessage.AUDIO)
     {
         Audio.BufferAudio(msg.Data);
     }
     else
     {
         /**
          * Wenn es sich nicht um ein Audio-Sample handelt, wird die Nachricht an das lokale
          * Objekt weitergeleitet. Es handelt sich folglich um einen Zustand einer Textbox zur
          * Liveverfolgung von Änderungen
          **/
         TextBoxState state = Connection.Serializer.ConvertToObject <TextBoxState>(msg.Data);
         ItemBase     item  = Surface.Database.GetItem(msg.LocalReceiver);
         if (item != null)
         {
             item.ProcessLiveData(state);
         }
     }
 }