/// <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); }
/// <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); } } }