Мне нужно поддерживать соединение между сервером и несколькими клиентами, чтобы клиенты могли отправлять команды и запускать события на сервере. Сервер в основном является музыкальным проигрывателем, и клиенты отправляют такие команды, как «Play ()», «Pause ()», «GetPlaylists ()» и т. Д. Сервер на его стороне должен иметь возможность сообщать клиентам такие вещи, как "SongEnded" или "PlayerPaused". Кроме того, должна быть возможность отправлять некоторые данные вперед и назад (например, текущая песня, изображение альбома, списки воспроизведения и т. Д.). Я мог бы, конечно, пойти дальше и сам создать сокет и создать свой собственный протокол для обработки всех вышеперечисленных сценариев, но есть вероятность, что кто-то уже сделал это до меня, так что я действительно хочу, чтобы инфраструктура создавалась в реальном времени. связь между сервером и клиентом для .NET. Я, например, посмотрел на xml-rpc, но не уверен, как мне с этим справиться с OnClientSend. Также, если я не ошибаюсь, xml-rpc сделан как REST-подобный. Я также посмотрел на wcf, но, поскольку у меня нет опыта работы с ним, я не знаю, с чего начать и как разместить сервер в простом консольном приложении.
Важно: Клиент должен быть не в состоянии .NET.
Важно: Это должно быть возможно для подключения к Java (Android).
Важно: Основными платформами являются Windows (сервер и клиент) и Android (клиент).
Важно: Потоковая передача аудио не производится. Тем не менее, изображения должны быть отправлены.
Любые идеи для решения будут оценены. Кроме того, если у вас есть ссылки на хороший фреймворк или описания того, как использовать компоненты, уже существующие в .NET, я был бы очень рад.
[Изменить]
Проблема в том, что при отправке данных через сокеты нет никакой гарантии (вообще!), Что отправленные вами пакеты будут одновременно прочитаны сервером. Я мог бы отправить 50, затем 100, затем 50 байтов еще раз, но сервер мог бы прочитать это как 200-байтовый фрагмент, или сначала 100, затем 100 и т. Д., Что означает, что мне нужно создать буфер, читать сообщения, пока я не узнаю наверняка (это это проблема), что я получил целое сообщение (и не более того).