![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Братцы помогите с такой вот штукой:
Задание курсовое: многопользовательский чат для общение в ЛАН в реальном времени, с использованием технологии мэйл слот. Вопросы по Mail Slot: 1. Как мне положить сообщение в почтовый слот удаленного компьютера? (CreateFile("\\\\remotePC\\mailslot\\RemoteMyMailSlot", ...) - это из этой степи? или я просто не знаю функции которая отпровляет сообщение в удаленный почтовый слот? ) 2. Как мне сделать список пользователей, или событие входа / выхода в / из чата, как чат на моем компьютере должен узнать что удаленный ПК запустил чат? (мне пока кроме следущей схемы ничего не приходит в голову: 1. чат анализирует сетевый настройки своего компьютера (мот знаете где найти функции взятия ip), результат анализа - диапазон ip в которых предположительно может быть установлен чат. 2. чат отсылает массовое сообщение (есть ли функция посылки сообщения сразу всем, или надо циклом перебирать ip?) и если сообщение достигает цели, то цель возврощает сообщение, на подобие "у мя тоже чат, вот мои имена, адреса, и т.д.". 3. при получении ответного сообщение добовляем его в базу пользователей и инициируем визуальный эффект входа нового юзера. 4. При выходе отправляется сообщение что юзер вышел.) Где мне найти информацию про richEdit я пока на нем остановился, или есть лучший компонент для отображение текста пользователей? по рич едиту: 1. удивила штука SendDlgItemMeassage(); после делфи оч непривычно, мне непонятны следующие штуки начинающиеся с LB_ ... как их осознать? где взять инфу (рус желательно) по работе с рич едитом. Список юзеров лучше заносить в List или в другой компонент? 1. List: как по строке правой кнопкой мыши нажать, чтобы выпало простенько меню? и опять mail slot (так для общего развития), если кто общался с ними близко, это вообще для чатов перспиктивная вещь? или есть более полезные технологии? в си шарпе тоже есть мэйл слоты? если да, то в каком они классе находяться? Надеюсь, что найдуться люди неравнодушные к моим вопросам, с нетерпением жду ответов ![]() Это сообщение отредактировал(а) Мурлыкатам_ - 16.5.2007, 02:16 |
|||
|
||||
Мурлыкатам_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Или хотя бы подскажите почему программа зависает при выполнение следующего кода:
эта часть вроде работает номана, но когда мы с тем же хэндлом hMailSlot пытаемся сделать чтение слота, то все виснет (((( :
пепси тому кто поможет! ![]() |
||||
|
|||||
jonie |
|
||||||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
хотябы так:
в более продвинутом случае (наличие маршрутизаторов например) тебе либо надо делать ведущие узлы, либо чистый p2p , что требует уже совсем не детских знаний в распределенной обработке информации....
--- все.. пора завязывать с БД, а то уже вместо QUOTE пишу query..... Это сообщение отредактировал(а) jonie - 17.5.2007, 23:59 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||||||||||||
|
|||||||||||||||||
Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Следующий вопрос:
После того как я записал сообщение в мэйл слот консольной прогой, и считал ее виндовсовской прогой в рич едит, хэндл становиться 0xfffffffff и второе сообщение уже передать нельзя... есть у кого нить мысли по этому поводу, как передать n-ое сообщение? Можно ли как нить обработать считываемое сообщение или передоваемое таким образом, чтобы было только само сообщение, без "МММММ" и "гц" на хвосте? Это сообщение отредактировал(а) Мурлыкатам_ - 18.5.2007, 14:01 |
|||
|
||||
jonie |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
---------- поправка по поводу ReadFile и асинхронного ВВ. почитай еще раз документацию к CreateMailslot(), там есть параметр сколько ждать при чтении.... (сам с этим "чудом" (видимо очень кросплатформенным))) не работал ). -------------- да и вообще имхо не очень удобно....
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
Мурлыкатам_ |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
О начало положено
![]() jonie, - ты был прав насчет ReadFile - он просто зависает в ожидании сообщения, MailSlot создаваемый с MAILSLOT_WAIT_FOREVER - вешает прогу до получения сообщения... что не есть гуд.
Забавная штука на пределе магии ![]() - в этом случае (я уже проверил) сообщение передается, не известно пока мне каким образом, всем компьютерам сети, имеющим такой мэйл слот... что для меня похоже решает практически проблему с событием - входа выхода из в чат )))))) просто надо проверять слот и все ))))))
jonie, - спасибо за идею, просто кул! Я как-то даже об этом не думал ... С хэндлом вопрос решился, баг до боли смешной ))) хэндл объявлялся равным НУЛЛ и инициализировался по нажатию кнопки, и получается я каждый раз пытался создать заново слот, проблема решилась следующим образом: - глобальный хэндл hMailSlot (нормально что он глобальный, или можно найти более изящное решение?) - проверка хэндла
Я вот думаю, проверку на присутствие сообщения наверное лучше вообще по таймеру делать? Хм.. не получается у мя цифры в строку скопировать ...
дает Unhalted Exception .. и че делать?! Что то я совсем в строках слаб ... Это сообщение отредактировал(а) Мурлыкатам_ - 19.5.2007, 08:35 |
||||||||
|
|||||||||
jonie |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
CheckMessageQueue(.....) - проверка в неблокируещем режиме на присуствие сообщений ReadMessage(.......) - читаем WriteMessage(.....) - пишем IsClientAlive (.....) - проверка что клиен онлайн (вызов по таймеру или еще как) Конструктор - создание слота Деструктор - его особождение. ну и иные функции нужные... (в более развернутой реализации сделал бы абстрактный класс, описывающий собственно функциональность месседжера, и от него отнаследовал бы для майлслота...) ---- ну и далее работал бы с экземпляром такого класса.... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
Мурлыкатам_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Кул!!! ![]() Вот это идея! Жалко что я не умею классы делать по человечески ![]()
Эт я уже додумался! ![]() Не могу сделать изящную проверку на присутствие сообщения :(((((((
И принимал бы как параметр хэндл слота ... ?! Что значит обертка? С этого места плз помедленней ![]() Это сообщение отредактировал(а) Мурлыкатам_ - 21.5.2007, 19:33 |
||||||
|
|||||||
jonie |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
под оберткой я понимаю, что класс содержит в себе собстевенно как данные HANDLE куда и откуда читается, так что в методы ничего передавать уже не надо - все и так будет в экземпляре такого класса. Т.е. как-то так
MSDN : GetMailslotInfo() ? -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
Мурлыкатам_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Класс я прибожил вроде ))
сразу возникла такая проблема:
почему за скобкой закрывающей мой объект класса CTMS уже не существуюет??? ![]() это так не удобно и обидно (((( Где надо граммотно проинициализировать класс? Не работать же с объектом класса в WM_TIMER ?! ![]() Или как по-другому сделать красиво циклическую проверку на присутствие мессаги?
Че-то у мя с этой штукой пока ниче не получается (((((( |
||||
|
|||||
jonie |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
Это сообщение отредактировал(а) jonie - 22.5.2007, 22:57 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||||
|
|||||||||
Мурлыкатам_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Я не знаю наверное у меня очень кривые руки
![]()
Это мой класс, максимально примитивный, учебный, пока что... Ниже, показано место, где класс используется ...
1. короче больше всего пугает оч маленькая область видимости, у мя получается где не сделай инициализацию класса, то за ближайшей фигруной скобной, класс уже не видно (((((((( 2. надо наверное какую-то все таки структуру передовать вместо простого текстового сообщения ... 3. не могу строки поразрезать шикарно ((( 4. в принципе с созданием слота, действиетльно мона внести в класс ... 5. с потоками я вообще не дружу (((((((((, возможно сделать красивую проверку с потоком? |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
Это сообщение отредактировал(а) jonie - 23.5.2007, 10:29 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Мурлыкатам_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
все проблемы нет ![]() ![]() хм.. я пока додумался тока пере вин мэйном его объявить глобально:
Может надо сделать это более изящно? (Сейчас у мя класс в одтельном хэдере, и инициализируется глобально в теле программы до вин майна). А куда лучше выводить текст? Что-то я смотрю у мя с рич эдитом ниче не получается ((( Мне нужно добовлять строкик как было в делфи "memo1.lines.add('aaaa');" а тут я пишу ему:
короче я решил все в листбоксы писать... или куда лучше? Это сообщение отредактировал(а) Мурлыкатам_ - 1.6.2007, 00:26 |
||||||
|
|||||||
Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Короче я не подеццки поднапрягся и у мя уже есть многопользовательский чат )))))))
Потоки окозались не такими зубастыми как я )))))) ![]() Правда возникла, как всегда у меня почему-то, текстовая проблема. Сообщение отсылаемое моим чатом, в моем чате дублируется 4 раза: Привет Привет Привет Привет На принимающем компе все кул, приходит тока 1 привет ![]() У меня поток, который отвечает за считывание входящих сообщений срабатывает 3 раза, и 1 раз по кнопке у мя вставляется текст. Мне надо сделать так: поток читает тока "входящие сообщения" а на "исходящие не реагирует", как так сделать? вот код моего мега чата!!! (90% рабочий чат!!!!) ![]()
Это сообщение отредактировал(а) Мурлыкатам_ - 2.6.2007, 03:15 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |