Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
Привет!
Я как-то давно наваял для себя клиент-серверный чат, а сейчас вот кое-как выдернул его из своих классов и решил выложить. По ходу навносил разных изменений, так что не все мб гладко работать будет... Собственно мб этот чат кому-то будет интересен? Я запросы на такой встречал, а вот реализации - ни разу. Предлагались идеи юзать netsend - но это не то, да и возможности не те (когда начинал - пробовал его), ms messenger, но опять же проблемы - у одних установлен, у других - нет и тд и тп, а это - взял да и присовокупил к основному приложению. Есть, правда, варианты и по-лучше, например встроенный чат в MS-SQL, но я юзаю бесплатный мускул, а этот вариант чата переписал так, что SQL-сервер вообще не нужен и не используется. Если дельных практических советов дадите, а еще лучше прямо кодом - будет вообще супер! Какие в нем заложены возможности и какие плюсы: - система работает на фоне основного приложения - Instant Messenger, т.е. сообщения приходят по факту их отправки - можно отправить спецкоманду, например заставить всех клиентов выйти из программы (для автоапдейта напр.) - клиентская часть не требует winsock.ocx и нет связанных с этим проблем - весь socket написан на WinAPI (код не мой, поделился местный формучанин Константин, за что ему большое спасибо) - серверная часть использует winsock.ocx, поскольку автор класса socket не написал интерфейс Listen, т.к. ему не было нужды, о чем мне и сообщил, а я не осилил - если программа клиента свернута в трей - клиент о приходе сообщения оповещается всплывающим тултипом - если прогамма свернута на панель или не в фокусе - "накрыта сверху" другой программой - клиент оповещается мерцанием окна на панели задач - если клиент получает Urgent-сообщение, то прога "вылазит" с ним "наверх" Минусы: - размер сообщения ограничен до 254 символов - невзрачный гуи - глюки и грабли Чего не хватает - передачи файлов, модных смайлов и разных шрифтов в истории переписки, костылей для стабильности работы и участия комьюнити Скачать можно здесь или здесь. Странно, но клик по ссылке может приводить к 404, хз почему, но если набрать ссылку в браузер - все ок, а если ее схавает на лету дауновлоадер какой-то, то тоже скачивает... ссыла - хттп://stas.mail15.com/Chat_VFP.zip Исправлено 9 раз(а). Последнее : CTAC-Ko, 01.02.12 17:18 |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
Еще кое-что подправил - практически полностью рабочий вариант.
Не хватает еще отправки истории переписки с сервера и удаление из списка ников с историей переписки. Однако по ходу прошу помощи - время от времени сообщения как бы не "доходят" клиенту, т.е. они как бы доходят, но не срабатывает их прием/обработка, т.е. не срабатывает событие получения данных. Похоже на некую буфферизацию - происходит некое накопление. Но ровно в момент когда такой клиент отправит сообщение - то зависшие на приеме сообщения тут же "падают" пачкой. Как с энтим бороться - ума не приложу... Исправлено 1 раз(а). Последнее : CTAC-Ko, 06.11.10 00:22 |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
ssa Сообщений: 13070 Откуда: Москва Дата регистрации: 23.03.2005 |
Цитата: ------------------ Лень - это неосознанная мудрость. |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В сокетах есть такая фигня - сервер может "накапливать" данные в буфере и слать их потом кучей. Ещё надо понимать что пакеты имеют ограниченный размер, и потому большие пачки будут приходить кусками. Надо параметры инициализации смотреть. Ну а клиент, который на чистом АПИ сделан... Надо изучать как там колбэки реализуются, как работа с буфером идёт и т.п.
------------------ WBR, Igor |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Сергей, может на здешний FTP помочь файлик человеку положить? А то всякие корявые файло-обменники будут мучать
P.S. Файл у меня в FF скачивается если скопировать в строку URL этот адрес хттп://stas.mail15.com/Chat%20VFP.zip - по клику идут какие-то редиректы и 404 - может пробел виноват, а может ещё что. P.P.S. Автору - стоит хотя-бы левые файлы повыкидать (.bak, .fxp коль уж есть prg) и заPACKовать библиотеки классов - по крайней мере messager.vcx И в конфиге default=D:\Chat VFP это моветон ------------------ WBR, Igor |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
ссылку поправил. странно вообще-то, первый архив когда выложил, создавая эту тему - качался ок. а тут заменил файл на серваке - не качается. это бесплатный хостинг, так что без фтп вполне можно обойтись, тем более что я его пользую уже больше 5ти лет - все гуд, не подводил. Правда весь сайт "недавно" ушел в qip и мне не понравились изменения, но...
Вобщем речь-то идет о 250кб-зип-архиве - какой смысл там еще что-то паковать и выкидывать? хотя конфиг выкинул вообще раз уже моветон... Вобщем единственная пока самая толстая проблема - это накопление данных в сокете. Вот ея бы порешить! Оно конечно можно оформить костыль в виде таймера, который будет ежесекундно отсылать 1 байт неведомо куда, но очень не хочется этого делать. Вообще-то я давно вынашиваю надежду на тему замены выньсокета чем-то иным, но не знаю чем, тем более что как-то один знакомый дельфист обмолвился что мол выньсокет - нах, это набор граблей, надо свое написать. Только он не берется, т.е. ему катастрофически не хватает на это времени - я его прошу уж не первый год, так мб есть что-то еще наподобии, но по-стабильнее, чтоли, которое полностью на апи можно описать? Хотя с другой стороны я потрачу нереальное кол-во времени с необязательным успехом на написание кода под такую возможность... Есть еще 1 проблема - почему-то не всегда срабатывают вынь-апи функции вывода проги "из тени":
Исправлено 6 раз(а). Последнее : CTAC-Ko, 06.11.10 00:53 |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
1) Я не про ВЕСЬ конфиг файл говорил, а конкретно про сточку с абсолютным путём. Впрочем DEFAULT я бы и в "относительном" виде не задавал в конфиге (в ярлыке запускающем проге ещё куда ни шло).
2) Если речь идёт про ActiveX WinSock Control - то эт ладно, можно и писать замены, если же ВООБЩЕ про сам виндовый АПИ - то это IMHO глупость. 3) У меня как-то так написан был вывод на первый план - но писалось ОЧЕНЬ давно (под 98 винду ещё), да и выводиться на первый план ЧУЖОЕ окно - от другого процесса (это из кода блокировки повторного запуска).
------------------ WBR, Igor |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
1) да в том конфиге только 1 еще строчка была - про 1251ю кодировку и все.
2) на винапи переведен только винсок (класс Socket) чтобы не юзать ActiveX WinSock Control как таковой. статью почитаю, спс. однако вывод на передний план нужен при повторном запуске и при выводе приложения из трея, для случаев перекрытия окна приложения другим, а также для urgent-мессаг, а отсыл таких мессаг позволен только юзерам с админ-правами, а для обычных сообщений в таких случаях реакция именно поморгать, посигналить, побалунить. Исправлено 1 раз(а). Последнее : CTAC-Ko, 08.11.10 00:37 |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
Обновился - еще фиксы, подключил отправку проги в трей и вывод на передний план через SetForegroundWindow.
|
Re: Клиент-серверный чат на WinSock-e | |
---|---|
VictorK Сообщений: 211 Откуда: Москва Дата регистрации: 05.06.2007 |
День добрый СТАС-Ко.
Вы не могли бы подправит ссылку, не работает. |
Re: Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
добавил там еще одну ссылку, если не работает - напишите. Самое смешное, что я уже находил решение основной проблемы, но так как оно никому особо не надо было, то уже и забыл в чем там было дело. Как-то пытался вспомнить, чтобы выложить с исправлениями, но так и не вспомнил...
|
Re: Клиент-серверный чат на WinSock-e | |
---|---|
VictorK Сообщений: 211 Откуда: Москва Дата регистрации: 05.06.2007 |
Не работает к сожалению вторая ссылка.
|
Re: Клиент-серверный чат на WinSock-e | |
---|---|
CTAC-Ko Автор Сообщений: 27 Откуда: Ивано-Франковск Дата регистрации: 23.05.2008 |
поправил ее, в попыхах копипейстнул левую ссылку
|
Re: Клиент-серверный чат на WinSock-e | |
---|---|
VictorK Сообщений: 211 Откуда: Москва Дата регистрации: 05.06.2007 |
Спасибо Вам большое.
|
© 2000-2024 Fox Club  |