Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.26;
Скачать: CL | DM;

Вниз

Чат для интернета   Найти похожие ветки 

 
RGV ©   (2009-01-20 03:25) [0]

Здравствуйте ув. мастера! Подскажите какие компоненты использвать для создания чата. Подходят ли компоненты TIdTCPClient и TidTCPServer.
Кроме того я планирую в чате использовать аватары. Причем так, чтобы пользователь мог выбрать свой собственный аватар из файла.
Трудность такая: как эти аватары отправлять? На сервер, а потом с сервера рассылать? Делать ли это в отдельном потоке?
Пока, что я остановился на компонентах TClientSocket и TServerSocket. Cделал класс Tclient такого содеражания: Name,IP:string;
Avatar:integer; //index of ImageList
Socket:Pointer;
ListItem:pointer;
Подскажите на правильном ли я пути. Или может можно проще.


 
Eraser ©   (2009-01-20 04:19) [1]

> [0] RGV ©   (20.01.09 03:25)


> Подходят ли компоненты TIdTCPClient и TidTCPServer.

подходят, на них лучше и остановить выбор.

> Cделал класс Tclient такого содеражания: Name,IP:string;
>
> Avatar:integer; //index of ImageList
> Socket:Pointer;
> ListItem:pointer;
> Подскажите на правильном ли я пути. Или может можно проще.

реализация не правильная, но путь правильный, главное не бросай )


 
RGV ©   (2009-01-20 05:28) [2]


> подходят, на них лучше и остановить выбор.


А как быть с тем, что у TidTCPClient нет события онрид или подобного? По таймеру чтоль читать? А не будет ли программа подвисать из за этого?

Если всеже использовать этот компонент, то как правильно его настроить?


> реализация не правильная, но путь правильный, главное не  бросай


А какая правильная?


 
Eraser ©   (2009-01-20 05:39) [3]

> [2] RGV ©   (20.01.09 05:28)


> А как быть с тем, что у TidTCPClient нет события онрид или
> подобного? По таймеру чтоль читать? А не будет ли программа
> подвисать из за этого?

нужно начать с того, что изучить теорию работы сокетов. Инди использует синхронный режим. Т.е. функции отправки/получения данных не возвращают управление, пока операция не будет завершена. вообще с т.з. понимания этот режим гораздо проще асинхронного (того, который используется в TClientSocket и TServerSocket), хотя на первый взгляд может показаться иначе.
чтобы программа не подвисала нужно все действия с сетью выполнять в доп. потоках, а не основном.


 
RGV ©   (2009-01-20 06:39) [4]


> нужно начать с того, что изучить теорию работы сокетов

Спасибо за совет, сейчас я этим сейчас и занимаюсь. Читаю "делфи глазами хакера", Эндрю Таненбау "Компьютерные сети".
Буду рад , если дадите ссылку на другую литературу подобного характера.


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


В потоке создавать соединение? или из потока обращаться к компоненту, но в таком случае не может ли возникнуть тупиковая ситуация?


 
Сергей М. ©   (2009-01-20 08:29) [5]


> RGV ©   (20.01.09 06:39) [4]


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


 
RGV ©   (2009-01-20 08:32) [6]

Спасибо Сергей М. за совет, в том то и дело во время разработки такого протокола и возникла необходимость проверить на деле как это работает, хочется сразу "пощупать руками". Тут и возникла у меня "тупиковая" ситуация.


 
Сергей М. ©   (2009-01-20 08:56) [7]


> возникла необходимость проверить на деле как это работает,
>  хочется сразу "пощупать руками"


Для проверки и "прощупки" вовсе не обязательно озадачиваться потоками - это же тест , а не "боевой" режим)


 
RGV ©   (2009-01-20 10:39) [8]

Сергей М. это понятно. Мне как-то привычней видеть результат сразу я привык делать проект не "последовательно", а "паралельно" прорабатывая визуальную сторону сперва. Мне бы было проще сначала создать средство или инструмент передачи данных а потом уже конструировать протокол. Поэтому меня интересует любая литература , которая поможет мне в решении поставленной задачи. Итак ... переходя к инструментам... Какже всетаки устроить потоки, из потоков обращаться к компонентам idTCPClient(server) , меня интересует более детальная конструкция.


 
Сергей М. ©   (2009-01-20 10:57) [9]


> Какже всетаки устроить потоки


см. класс TThread или функцию BeginThread()


> из потоков обращаться к компонентам idTCPClient(server)


Обращение к этим компонентам в доп.потоке по сути ничем не отличается от обращения в осн.потоке.


 
RGV ©   (2009-01-20 12:59) [10]


> Обращение к этим компонентам в доп.потоке по сути ничем
> не отличается от обращения в осн.потоке

а что делать? создавать компонент в потоке чтоли?


 
Eraser ©   (2009-01-20 13:07) [11]

> [10] RGV ©   (20.01.09 12:59)

да.


 
RGV ©   (2009-01-20 13:21) [12]

тоесть создавать поток при запуске програмы и этот поток будет работать до конца программы?? Как для клиента так и для сервера?


 
Сергей М. ©   (2009-01-20 13:25) [13]

Поток следует создавать и уничтожать там и тогда, где и когда это необходимо.


 
RGV ©   (2009-01-21 04:33) [14]

Хорошо. Выложу все енто дело в отдельный юнит, допишу и выложу код, для корректировки..

Продолжение следует ...:]



Страницы: 1 вся ветка

Текущий архив: 2010.12.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
8-1208708462
NaRuTo
2008-04-20 20:21
2010.12.26
Полупрозрачность


2-1285825330
И. Павел
2010-09-30 09:42
2010.12.26
Уничтожение формы при ее закрытии.


15-1284462862
{RASkov}
2010-09-14 15:14
2010.12.26
USB Flash не устанавливаются ОСью как положено


2-1285738449
Temp User
2010-09-29 09:34
2010.12.26
Программно выделить секцию у хидера


2-1285865707
Rembo2010
2010-09-30 20:55
2010.12.26
Как прочитать значение из файла???