![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Broadcast передача файлов по Lan
OneFragLeft © (2005-01-25 06:23:00)Хочу сделать чат в локалке, чтобы можно было использовать в нём аватары.
Но вот как передать всем изображение из TImage ума не приложу.
Как можно реализовать такую задумку? Причём не используя прямое соединение, а
посылать всем, броадкастом. Картинки не большие, до 48*48pics.
Senti (2005-01-26 15:10:00) [1]Я так понимаю чат идет на UDP ?
Если так, то реализация такая:
Кладешь компонент TServerSocket и TClientSocket (они будут ответственны за передачу аватаров).
1. Человек запускает чат. TServerSocket приводится в активный режим на определенном порту.
2. Высылает бродкаст пакет с уведомлением о новом пользователе.
3. Остальные получают пакет и соединяются с этим IP на ServerSocket
4. После соединения через SendStream отсылается аватар
Если пользователь изменит аватар, то высылается пакет на изменение.
Самое простое решение SendStream через Server и Client сокеты
Max_MS (2005-01-25 13:19:00) [2]Есть решение простое :)
но туповатое :)
Картинку в UUE кодируешь
и как текст ее засылаешь
можно присобачить какой нить контроль целосности
ну а дальше дето техники.
Style (2005-01-25 12:37:00) [3]Я бы делал так:
Пользователь заходит в чат, его клиент начинает по таймеру посылать на broadcast UDP пакеты, информируя другие машины, о своем присудствии.
Если у какой либо машины - нет информации о пользователе, то она устанавливает прямое соединения с компьютером от которого пришел UDP пакет и закачивает все что необходимо. Либо эти машины общаются опять же по UDP, но там нужно будет самому реализовать проверку, на то что данные действительно доставлены и еще рассылать инфу частями.
Если пользователь сменил аватару. То разумно было бы изменить какой-нить параметр в UDP пакетах которые идут по таймеру на BroadCast. К примеру можно посылать время последнего изменения аватары.
Карелин Артем (2005-01-25 09:41:00) [4]Если уж не найдешь красивого решения, то передавай картинку один раз по прямому соединению, потом из кэша бери ее. Они же в gif или jpg маленькие совсем будут.