|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.06.2011, 18:46 | #1 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
Реализация многопоточного чата с возможностью передачи файлов по сети
Всем привет!!!!
Люди кто чем-то сможет помочь, то - "СТРАНА ГЕРОЕВ НЕ ЗАБУДЕТ! " Я пишу диплом и скоро мне его сдавать, но есть ряд нерешенных проблем, и уж без Вас господа дело скорей всего совсем худо будет! Значит так ознакомлю Вас, всех, с моими проблемами в проекте. Для начала говорю сразу, скелет взят и статьи "Создание многопользовательского чата" сдесь же на форуме, вот это ссылкочка http://pblog.ru/?p=100 (надеюсь она добавилась), так же http://programmersforum.ru/showthread.php?t=12574. Но провел ряд небольших изменений, таких как разделил клиент и сервер на 2-е отдельные программы, на сервере убрал Таймер, все происходит в обработчике у сервера OnClientRead. С самим чатом проблем нет. Проблемы в следующем: 1) Необходимо отделить личные сообщения от общих, т.е. реализовать вкладки как в квипе или аське. Если быть точнее я добавил компонент PageControl и сделал одну вкладку с названием «Общий чат», так вот в нем должны отображаться только сообщения для всех пользователей, когда приходит личное сообщение как у клиента так и у сервера, необходимо что бы создавалась новая вкладка с названием того, от кого пришло это личное сообщение. Так же необходимо предусмотреть, если вкладка уже создана с пользователем, и от него приходит сообщение, то не надо что бы она создавалась еще раз, необходимо что бы на вкладке появлялась картинка в виде конверта (которая лежит в папке с файлами и наз. «пришло сооб» ). На форме есть кнопка «Создать вкладку» она реализует добавление новой вкладки с динамическим компонентом RichEdit. Но создание вкладок должно происходить автоматически, но при ее создание не надо что бы на нее сразу же переключалась, надо что бы постоянно была открытая только вкладка с Общим чатом, а на личные уже вручную переходить, когда будет отображаться иконка. Надо так же что бы была кнопка закрыть вкладку с личными сообщениями. 2) Вторая проблема заключается в том, что бы в Списке пользователей при нажатии правой кнопкой на ник можно было выбрать один из двух пунктов, просмотреть его IP-adres ( хоть в статье и было написано про то как узнать IP я к сожалению не догнал ((((( ) или отправить файл, само это контекстное меню которое выскакивает при нажатии на ник пользователя я реализовал, но надо сделать так что бы когда ты выбираешь свой ник и нажимаешь правой кнопкой, действий что бы никаких не было. 3) Эта проблема частично связана со второй, поскольку сама проблема заключается с передачей файлов. Она у меня реализована частично, т.е. файл посылается с клиента на сервер и все отлично происходит, проблемы в следующем: - Почему то файл посылается размером не больше 11 Мб, пробовал послать серверу файл 18 Мб в конце при передачи файла, сервер глохнет, не знаю почему даже, необходимо что бы файл посылался хотя бы размером до 300 МБ. - Сервер может принимать файл только от 1 клиента, если во время приема сервера файла, другой клиент шлет файл, сервер тоже зажмуривается. - При приеме файла, сервер не отображает сообщение в чате, ни личное ни общие, радует что отправляет, но тоже не отображает его. - Необходимо реализовать передачу файлов не только клиент – серверу (я смог реализовать только так) , а так же клиент-клиенту, и сервер-клиентам ( при посылки файла клиент-клиент, все действия должны проходить через сервер, т.ь. файл шлется сначала на сервер, в папку Хранилище Файлов, когда он его полностью примет, должен отослать его другому клиенту, которому этот файл предназначался, после чего с хранилища файл должен автоматически удалятся и отсылаться сообщение посылавшему клиенту что сообщение успешно доставлено , а когда файл предназначается серверу, он должен автоматически создавать папку с названием от кого пришел файл (ник клиента). Но через сервер должен проходить за раз не один файл как у меня, а что бы многопоточный режим был, я правда не знаю возможно ли такое в СОКЕТАХ. Вот собственно и все, буду рад любой помощи и советам, и указанием мест в Исходниках об ошибках. Исходники и архив с проектом конечно же прилагаются. У кого вдруг не устоновлен компонент сокет, то неообходимо: выбрать меню: Component – Install Packages… – Add., далее нужно указать файл …\bin\dclsockets70.bpl. !!!!!!!!!!!!!!!!!Буду благодарен очень тем, кто сможет потратить своё время на мой проект и помочь хочь чем-то!!!!!!!!!!!!!! Последний раз редактировалось darek13; 03.06.2011 в 19:16. Причина: Уточнение |
03.06.2011, 18:55 | #2 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
Исходник Сервера
Код:
|
03.06.2011, 18:58 | #3 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
Продолжение Исходника Сервера
Код:
|
03.06.2011, 19:02 | #4 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
Продолжение 2 Исходника Сервера
Код:
|
03.06.2011, 19:03 | #5 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
Продолжение 3 Исходника Сервера
Код:
|
03.06.2011, 19:05 | #6 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
ИСХОДНИК КЛИЕНТА
Код:
|
03.06.2011, 19:05 | #7 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
Продолжение Исходника Клиента
Код:
|
03.06.2011, 19:37 | #8 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Посмотри исходник. Может чем-то и поможет. Я давно его делал. Где-то там ошибки с массивами. Главное, попытка создания лички.(Выделяете галочками)
Все, чем могу помочь. |
03.06.2011, 19:46 | #9 |
Пользователь
Регистрация: 27.04.2011
Сообщений: 68
|
_PROGRAMM_
Спасибо за любую помошь, сейчас посмотри твой проект, может что то и подойдет ) |
03.06.2011, 19:56 | #10 | |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Если хочешь файлы отправлять, вот держи. Если останется время, добавь эту возможность. Думаю, не помешает. Только перед началом сделай копию всего чата.
p.s. Картинку, которую передаю программой, рисовал не я -- Add пересмотрел первый пост и увидел, что сервер у тебя передает файлы. Когда у Вас диплом? Цитата:
Последний раз редактировалось _PROGRAMM_; 03.06.2011 в 20:03. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
передачи по сети файла | Alar | Работа с сетью в Delphi | 4 | 07.02.2011 23:21 |
Ошибка конвертации при передачи фото по сети | Lokos | Работа с сетью в Delphi | 2 | 07.10.2010 02:08 |
Локальные сети, алгоритм передачи данных | Guliayka | Помощь студентам | 1 | 25.12.2009 16:26 |
помогомите написать програмку для передачи сообщений в локальной сети | Илюха | Работа с сетью в Delphi | 6 | 20.11.2007 00:57 |