private static void SendAll(ClientInfo client) { MessageModel _sendData = new MessageModel(); _sendData.Type = MessageType.UpdateAll; _sendData.Token = client.Token; _sendData.RemotePort = client.RemotePort; UpdateAllMessage message = new UpdateAllMessage() { PlayerState = MediaController.Current.CurrentPlayer.CurrentState.ToString(), TrackIndex = MediaController.Current.CurrentPlayingIndex, SeekPosition = MediaController.Current.CurrentPlayer.Position, Volume = MediaController.Current.CurrentPlayer.Volume }; List <MusicInfo> playlist = new List <MusicInfo>(); foreach (var item in MediaController.Current.SongList) { playlist.Add(new MusicInfo() { Artist = item.Artist, Title = item.Title, Duration = item.Duration }); } message.Playlist = playlist; string json = JsonHelper.ToJson(message); _sendData.Content = CryptographicBuffer.ConvertStringToBinary(json, BinaryStringEncoding.Utf8); _sendData.ContentLength = _sendData.Content.Capacity; UDPClient.SendData(client.HostName, client.RemotePort.ToString(), MessageModel.FromMessage(_sendData)); }
private static void SendData(MessageModel _sendData) { foreach (var client in UDPServer.Current.ClientList) { _sendData.Token = client.Token; _sendData.RemotePort = client.RemotePort; UDPClient.SendData(client.HostName, client.RemotePort.ToString(), MessageModel.FromMessage(_sendData)); } }
private void ResponseDeviceDetection(MessageModel request, HostName remoteHost) { MessageModel response = new MessageModel(); response.Type = MessageType.DeviceDetection; response.RemotePort = request.RemotePort; string token = ""; ClientInfo existClient = null; if (ClientList.Count > 0) { existClient = ClientList.FirstOrDefault(p => p.HostName.Equals(remoteHost.RawName)); } if (existClient != null) { token = existClient.Token; } else { token = GenerateRandomToken(8); ClientList.Add(new ClientInfo() { HostName = remoteHost.RawName, RemotePort = response.RemotePort, Token = token }); } response.Token = token; var data = MessageModel.FromMessage(response); UDPClient.SendData(remoteHost.CanonicalName, response.RemotePort.ToString(), data); Debug.WriteLine("response to " + remoteHost.CanonicalName + " for " + response.Type); }