Страница 1 из 1

Чат по локальной сети средствами Delphi 7

Добавлено: 23 апр 2007, 12:25
ntoskrnl.dll
Решил написать программу для чата по локальной сети.
Идея следующая:
На сервере располагается Сервер базы данных и Remote Data Module.
База данных представляет собой файл формата MS Acces и содержит в себе 3 таблицы:
  1. Chat - здесь будут располагаться чат и все сообщения пользователей
  2. Users - здесь будут аккаунты юзеров
  3. OnlineUsers - здесь будут имена пользоателей, которые в данный момент в чате
Клиентские проги будут обращаться к базе даных через DCOMConnection и посылать/читать от туда сообщения.

Но есть большая проблёма! :(
Я не знаю как отслеживать события изменения таблицы, когда необходимо отобразить новое сообщение в окне чата.
Я не знаю как выводить текст в TRichEdit разным цветом.
Я не знаю как реализовать передачу файлов через Локалку.

Помогите пожалуйста.
А то мой проект (если его можно назвать проектом) просто сгорит! :(

Заранее спасибо!...

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 23 апр 2007, 12:53
SergeyS
М-да, подобной реализации чата мне ещё встречать не приходилось.
В своей практике, всё что касается реализации COM объектов я стараюсь избегать эту технологию. Примеров этому тьма (из моей практики, приводить не буду), да и то, что Microsoft сама отказывается от дальнейшего развития идеи COM и делает ставку на .NET, тоже о чем-то да говорит (мне достаточно давно доводилось читать вводную статью про .NET, так там так и было сказано: COM отстой, и Microsoft думая о своих клиентах и предлагает технологию круче).

Вообще-то большинство идей чата основываются на сокетах. TClientSocket и TServerSocket. Может тебе в эту сторону порыть, да и в примерах с Delphi есть уже готовая реализация чата на сокетах. Кажется так и называется Chat.

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 23 апр 2007, 13:40
SergeyS
М-да, подобной реализации чата мне ещё встречать не приходилось.
В своей практике, всё что касается реализации COM объектов я стараюсь избегать эту технологию. Примеров этому тьма (из моей практики, приводить не буду), да и то, что Microsoft сама отказывается от дальнейшего развития идеи COM и делает ставку на .NET, тоже о чем-то да говорит (мне достаточно давно доводилось читать вводную статью про .NET, так там так и было сказано: COM отстой, и Microsoft думая о своих клиентах и предлагает технологию круче).

Вообще-то большинство идей чата основываются на сокетах. TClientSocket и TServerSocket. Может тебе в эту сторону порыть, да и в примерах с Delphi есть уже готовая реализация чата на сокетах. Кажется так и называется Chat.

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 23 апр 2007, 13:41
SergeyS
блин, тормазнул :)

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 23 апр 2007, 13:42
ntoskrnl.dll
Ладно. Тогда подскажите какую-нить инфо по WinSock...
Tahank you...

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 27 апр 2007, 07:46
Dr_Grizzly
Хочешь я тебе уже готовый кину с исходниками? Тоже делать было нечего, решил навоять. А пользуюсь все равно не своим а уже готовым бесплатным Intranet Chat

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 28 апр 2007, 22:34
Naeel Maqsudov
ntoskrnl.dll, :) Если хотите сделать именно с базой данных, то можно взять InterBase. Там есть Alert-ы. Все приложения подписываются на алерт, скажем, "Alert_Room1". Если обно приложение отправляет такой алерт, после постинга сообщения, то все кто подписан, его получат.
:) Такой же механизм есть в Oracle, но это уже будет совсем издевательство! :)

А если серьезно, то для широковещательных рассылок почитайте про mailslot-ы. (справка по Win32 API)
Работа с mailslot-ами абсолютно аналогична работе c файлами, просто с точки зрения ОС эти виртуальные файлы обеспечивают IPC (Inter process communication) - т.е. один процесс в него как бы пишет, а все (напрмиер все в домене или рабочей группе) одновременно читают.

Кстати, вместо сокетов можно организовать обмен по майлслотам и пайпам (Pipes - это как Mailslots, только не широковещательные, а между только двумя процессами.)

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

Re: Чат по локальной сети средствами Delphi 7

Добавлено: 03 май 2007, 23:40
Spil
А почему бы не воспользоваться Indy? Там есть IdIRC - на мой взгляд удобное решение. Читать Indy Help и RFC1459 http://www.irchelp.org/irchelp/rfc/rfc.html