Конференция "Сети" » Протокол клиент-серверного приложения
 
  • Diversus © (30.04.13 22:01) [0]
    Доброго времени суток!

    Собственно, возникла задача. А именно, необходимо на Delphi написать клиент/серверное приложение которое бы выполняло следующие функции:

    1) Клиент отправляет серверу запрос на авторизацию, устанавливает соединение с сервером
    2) Клиент время от времени отправляет серверу запрос на получение одного файла, сервер отдает клиенту, клиент его обрабатывает, клиент должен иметь возможность отправлять сообщение или файл другому клиенту через сервер, клиент должен уметь отображать видео с камеры другого клиента через сервер.
    3) Желательно, чтобы все это поддерживало шифрование трафика.

    Воспользоваться скайпом, не предлагать, мол он идеально подходит под описание))) Тут своя специфика и то, что нужно, ни одна программа не даст.

    Собственно смотрел в сторону ICS от overbyte, все мне нравится и по скорости и по функционалу. Хотел модифицировать немного TFTPServer и TFTPClient, они подходят практически идеально, чуть допилить, добавить своих команд и в путь, но! Как я понял из кода они ориентированы на работу с запросами от клиентам к серверу, а чтобы добавить обратную связь надо много чего сделать (активный/пассивный режим, обработка команд клиентом и т.д.)
    Так же не понятно, как будут вести себя этот клиент/сервер на базе FTP ICS, если одновременно будет отображаться видео с камеры и человек будет отправлять сообщение... Как их потом разделить?

    Долго думал на эту тему, на ум идет только изобрести свой протокол. Но как быть с множеством задач, которые идут от клиента к другому клиенту через сервер (одновременная работа того же видео и отправка сообщений)? Сколько глюков при этом вылезет, прежде чем появится нормально работающая программа.

    Теперь собственно вопрос: может есть какой нибудь готовый протокол на Delphi, на реализацию которого можно посмотреть, или взять за основу? Такой, как например FTP, только с обратной связью между сервером и клиентом, и чтобы можно было выполнять несколько задач одновременно? Ведь наверняка кто-то сталкивался с подобной проблемой.

    Буду благодарен за любой совет или посильную помощь.

    Спасибо!
  • DVM © (30.04.13 22:44) [1]
    В принципе HTTP удовлетворяет по всем пунктам

    По поводу одновременности - либо разные соединения для разных потоков данных, либо микшировать в одном соединении, разбивая все данные на блоки с указанием типа блока и т.д.

    Чтоб ответить на вопрос по поводу существующих протоколов надо понять, для чего это все? что за программа должна получиться в результате?
  • DVM © (30.04.13 22:47) [2]
    по всем признакам тут XMPP протокол подойдет
  • Diversus © (30.04.13 23:46) [3]

    > по всем признакам тут XMPP протокол подойдет

    Насколько я знаю, XMPP слишком избыточный протокол. Справится ли он нормально с передачей видео?
  • DVM © (30.04.13 23:56) [4]

    > Diversus ©   (30.04.13 23:46) [3]


    > Справится ли он нормально с передачей видео?

    видео отдельно обычно передают по более приспособленному для этого протоколу, например RTP
  • Diversus © (01.05.13 13:40) [5]

    > видео отдельно обычно передают по более приспособленному
    > для этого протоколу, например RTP


    Не знал про этот протокол... Надо будет посмотреть. Спасибо.

    Ну так что? Никто не делал подобный расширяемый протокол?
  • NoUser © (02.05.13 03:00) [6]
    > и то, что нужно, ни одна программа не даст.
    А Ваших будет сразу две!

    > расширяемый, а кем?

    Напишите простенький S-C на TCP с таким форматом

    длина пакета  (<= ~ 1K + заголовок)
    длина данных
    смещение данных
    данные          (<= ~ 1K)
    ? фин
     
    сериализируйте связку ид-?время-функция-инфа в данные
    Опишите приемник,
    опишите передатчик,
    запускайте,
    ? шифруйте,
    наворачивайте функционал,
    используйте IOCP,
    смотрите видео с камеры другого клиента

    или

    ищите/купите готовый "компонент" >на Delphi
  • Diversus © (02.05.13 20:27) [7]
    Да я думал может у кого есть хороший пример, чтобы подсмотреть... :)
 
Конференция "Сети" » Протокол клиент-серверного приложения
Есть новые Нет новых   [134427   +34][b:0][p:0]