![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| ckazu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Приветствую.
У меня такая проблема: Пишу чат на Delphi и не знаю как реализовать такую вещь как список пользователей(ников, тех кто сейчас в чате), как енто сделать? |
|||
|
||||
| ВасяТриллер |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 2.9.2005 Репутация: нет Всего: 1 |
А как ты узнаёшь о существовании собеседника?
|
|||
|
||||
| ckazu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Пока что никак, только если он сам напишет что нить в чате. Вот я и хочу чтобы было окно которое показывало бы чатовцев....
|
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: нет Всего: 7 |
TListBox (без картинок), или TListView (если нужны иконки).
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| Aleksiem |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 4.5.2006 Где: Выкса Репутация: 1 Всего: 2 |
Я так и не понял в чём проблема: в интерфейсе (ты не можешь их отобразить) или в сетевом обмене информацией (можно увидеть только когда пользователь пошлёт сообщение. Если первый вариант, то опиши в чём именно проблема. Если второй, то при входе в чат можно посылать в сеть широковещательные пакеты со своими аттрибутами, кроме того можно каждые нцать секунд посылать пакет пинга, чтобы знать кто сейчас в чате а кто уже вышел, при выходе из чата должен посылаться пакет выхода со всеми аттрибутами. Вообще надо бы поподробней описать чат, на каком протоколе работает как происходит связь с клиентами.
|
|||
|
||||
| ckazu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Вот чат, он самый простой. Я хочу чтобы там был просто список юзеров, как это правильнее сделать? |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: нет Всего: 7 |
Нет у меня такого компонента, но скорее всего, нужно в этой процедуре
вылавливать IP отправителя (из ABinding.PeerIP(?)), искать его в списке юзверей, и если нет, то добавлять. Список юзверей можно в StringList (читай ListBox ;)) засунуть. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| ckazu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Если не сложно, напиши пожалуйста пример алгоритма, а то я Дельфи только начал и пока что ничего не знаю.
|
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: нет Всего: 7 |
А я его уже написал.. А как это будет выглядеть в коде, нужно смотреть в доке на эти компоненты. У меня не все есть из этих компонентов, так что, прости, гипотезов не сочиняю.. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
| Aleksiem |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 4.5.2006 Где: Выкса Репутация: 1 Всего: 2 |
Как вариант можно вставить в процедуру создания формы, что-то типа
IdUDPClient.Send('connect:' + GetLocalIP); а в процедуре IdUDPServerUDPRead анализировать приходящие данные и создавать список пользователей, и соответственно в процедуру OnClose вставить IdUDPClient.Send('disconnect:' + GetLocalIP); и опять же в процедуре IdUDPServerUDPRead анализировать приходящие данные и очищать список пользователей от вышедших. Хотя способ не идеален (могут висеть мертвые пользователи), но для начала подойдёт. |
|||
|
||||
| ckazu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Спасиба тебе, а не подскажешь как можно этот список сделать? Я вот думал через БазыДанных можно. |
|||
|
||||
| Aleksiem |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 4.5.2006 Где: Выкса Репутация: 1 Всего: 2 |
Честно говоря немного недоехал причём здесь базы данных. Всё можно сделать примерно следующим образом: создаёшь ListBox (пусть будет lbUsers), в обработчике процедуры IdUDPServerUDPRead вставляешь примерно следующее
Писал без делфи так что возможны мелкие ошибки. Примерно так Это сообщение отредактировал(а) Aleksiem - 8.6.2006, 02:11 |
||||
|
|||||
| ckazu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
Не понял вот этого
База данных для того чтобы ник запомнить. Наверное это можно сделать как то подругому, да? |
|||
|
||||
| Aleksiem |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 4.5.2006 Где: Выкса Репутация: 1 Всего: 2 |
Просто ищещь строку, содержащую имя выходящего из чата. Примерно так
На выходе iDelete будет содержать индекс строки с текстом User, те с именем выходящего пользователя. |
||||||
|
|||||||
| Sinneren |
|
|||
|
{YaGoo} ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 20.3.2009 Где: Уфа Репутация: нет Всего: 1 |
сама реализация понятна, даже для других (вроде) способов(сокеты).
я так понял товарищь хочет узнать, как клиент передаст информацию, содержащую свой ник, чтобы сервер это принял уже и там вписал во всякие листбоксы,разослал другим клиентам для их списка и т.п. уже. так вот как получить этот ник с клиента, если тем же способом как и посылка сообщения (у сокетового чата), то он выведет в чат же всё передаваемое, пробовал отправку пакета через winsock, но там нужно у клиенты выставить тип blocking, пакет доходит, но не как строка и только до сервера(или клиента - уже не помню) и при этом режиме не удаётся посылать сабжи вообще. так как же передавать клиенту инфу о себе(ники и прочее)? Это сообщение отредактировал(а) Sinneren - 17.1.2010, 14:48 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |