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