Текущий архив: 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