Передача комманд между клиентом и сервером
Нужно организовать протокол взаимодействия между клиентом и сервером. Клиенты при обращении к серверу должны иметь возможность:
1. Авторизовываться;
2. Получать список других подключенных клиентов;
3. Отправлять текстовые сообщения другим (конкретным) клиентам;
4. Отправлять бинарные файлы другим (конкретным) клиентам.
Самый оптимальный на мой взгляд вариант в данной ситуации - описать свой собственный протокол прикладного уровня, реализующий вышеописанные команды.
Отсюда вопрос: может кого-нибудь посоветовать какую-нибудь литературу/примеры по написанию протоколов программного уровня?
P.S.
В качестве среды реализации думаю выбрать C#, но в данном случае это не существенно.
http://www.codenet.ru/progr/inet/icq/. В принципе, если убрать из протокола всё лишнее, вполне сойдёт под мои нужды :)
Нашёл статью с описанием протокола ICQ -
Кстати, можете в консоли подходящего джаббер-клиента посмотреть, как происходит подключение. Очень познавательно, да и протокол Jabber вам бы наверняка больше подошёл.
Гляньте
Цитата:
1. Авторизовываться;
2. Получать список других подключенных клиентов;
3. Отправлять текстовые сообщения другим (конкретным) клиентам;
4. Отправлять бинарные файлы другим (конкретным) клиентам.
2. Получать список других подключенных клиентов;
3. Отправлять текстовые сообщения другим (конкретным) клиентам;
4. Отправлять бинарные файлы другим (конкретным) клиентам.
Некоторый матчинг есть с дву/одно-ранговыми пиринговыми сетями, имхо.
Тот же BitTorrent (DHT как опция) работает весьма похоже.
http://ru.wikipedia.org/wiki/BitTorrent
http://ru.wikipedia.org/wiki/DHT
http://ru.wikipedia.org/wiki/Kademlia
Может, будет чем-то полезно?
В итоге решил проблему передачи команд путём реализации протокола XML-RPC. Учитывая богатство функционала .NET по части генерации/парсинга XML, реализация вышеобозначенного протокола (точнее той его части, что нужна для решения моей задачи) не вызывает особых проблем smile