Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Временная таблица для сокетовых подключений


Автор: gregson 16.12.2009, 19:38
Добрый день, коллеги.

Можно ли создать на визуальной форме таблицу для отображения подключенных к сокетовому серверу клиентов? Какой нужно использовать компонент?
А самое главное можно ли будет редактировать эту таблицу из разных потоков. Сервер создан на компоненте INDY версия 9. Пишу в Delphi 7.
Собсна сервер уже готов и работает, просто хотелось бы нормальной визуализации, например:

Приконнектился новый клиент -> в таблице появилась новая запись с ip адресом

Уже из потока....клиент представился системе -> находим в таблице этого клиента по ip адресу например и заполняем в найденной строке колонку ID

Клиент отсоединился или поймали exception -> находим в таблице этого клиента и удаляем запись.

Раз уж запостил тему, вот еще вопрос в догонку, если есть у кого ссылки на темы правильного логирования работы сервера, закиньте пожалуйста. На сервер подключается много клиентов, много потоков, пока все валю в одно цельное мемо, получается бардак, но разобраться можно, хотелось бы писать логи по ИД пользователя и вообще что лучше использовать, думаю мемо дилетантское решение.

Заранее благодарю за любую помощь!

Автор: Snowy 17.12.2009, 12:39
TListView в режиме Report вполне подойдёт.
В потоке создавай итем и запоминай.
Можно редактировать прямо в потоке - работа всё равно событийная - сообщения будут в очередь выстраиваться.
Каждое подключение работает со своим итемом (строкой). 
При коннекте создаёт, при работе меняет, при отключении убивает.

Автор: gregson 27.12.2009, 19:38
Snowy, спасибо за ответ, компоненту посмотрел, красивая, но как с ней работать так и не догнал даже после того, как отгуглил...Не могу понять как задать тип столбцов и как к ним потом обращаться!?
А еще не будет ли exceptionsов если пара разных потоков будут одновременно пытаться менять данные в этой таблице?!

Автор: Akella 28.12.2009, 17:02
Цитата(gregson @  27.12.2009,  19:38 Найти цитируемый пост)
А еще не будет ли exceptionsов если пара разных потоков будут одновременно пытаться менять данные в этой таблице?! 


Цитата(Snowy @  17.12.2009,  12:39 Найти цитируемый пост)
Каждое подключение работает со своим итемом (строкой). 


Автор: Snowy 28.12.2009, 17:31
Что касается, как работать - полистай форум - тут примеров есть немало.
Что касается разных потоков, то я уже написал - работа идёт на уровне сообщений.
То есть разные потоки отправляют окну сообщения, которые выстраиваются в очередь сообщений.
Напрямую потоки ничего не делают - просто отправляют сообщения в очередь.
А главный поток уже их обрабатывает сам в порядке поступления.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)