Вверх ↑
Ответов: 4621
Рейтинг: 746
#1: 2014-06-02 11:25:24 ЛС | профиль | цитата
Azerate, "минуя сервер" - зачем? Сервер является связующим звеном для клиентов, отвечает за авторизацию пользователей, помогает соединять пользователей, которые не имеют выделенного IP, ведет журнал сообщений и т.п.

"Разные типы" данных отличаются только способом обработки в принимающей схеме. Передаются по сети одинаково. Проблема только в том, что любые данные передаются порциями, которые мы получаем на событии onRead. Поэтому при передачи больших файлов принимающей стороне нужно знать об окончании передачи. Это можно реализовать путем посылки перед самим файлом условной команды, показывающей, что сейчас будет передаваться файл указанной длины. Тогда клиент будет считывать это количество данных в файл, а затем опять переключится в "текстовый режим".
Кроме того, временный запуск отдельного сервера на другом порту исключительно для передачи файлов тоже может быть подходящим вариантом. Условием окончания передачи может служить разрыв соединения.

Показ онлайн-клиентов - при подключении нового клиента сервер может посылать всем текущим подключениям условную команду "пользователь такой-то появился/исчез из сети". А клиенты у себя обновляют список активных пользователей.

карма: 26

0