Статьи

Многопользовательский чат на BAT

Многопользовательский чат на BAT

Всё что нужно для запуска:
1. Взять код по ссылке в конце статьи
2. Сохранить код в файл *.bat
3. Положить файл в сетевую папку
4. Запустить файл с разных компов (можно и с одного)

В комментариях предложили использовать совместно с DropBox, но говорят — что работает весьма не быстро.

Прежде всего, хочу извиниться за код, оформленный скриншотами. Просто никто не подсветит BAT-ник лучше, чем это делает Notepad++. Снимки кода сохранены в палитровые (256 цветов) PNG — вес скринов кода по 5-10Кб.

Сперва про реализацию

Базовые элементы:
1. %chat% — имя группы
2. %nick% — имя пользователя
3. файл "%chat%_history" — файл с полной историей группы
4. файл "%chat%" — файл с последней репликой в группе
5. файл "%chat%_cs" — файл используемый для синхронизации

Для начала спросим пользователя ввести имя группы и свой ник. После получения имени группы и ника в строке №5 производится запуск скриптом самого себя с тремя параметрами: слово talk_widget, а также имя группы и имя пользователя.


Теперь выводим в заголовке окна название группы и имя пользователя (строка №3). Если существует файл с именем %chat%_history, печатаем его содержимое на экран (строка №4). Далее в цикле считываем содержимое файла %chat% и сравниваем его с тем, что было в предыдущем считывании. Если содержимое файла изменилось — печатаем его на экран.



Изначально код имеет следующую структуру: при запуске проверяются параметры, если первым параметром идёт слово «talk_widget», то скрипт выполняет код, относящийся к отправке текста. При отсутствии такового параметра, код выполняет функцию получения и отображения данных. Изначально производится запуск скрипта без параметров, он спрашивает имя группы и имя пользователя, запускает второй процесс с параметром «talk_widget», а сам начинает печатать содержимое чат-группы.

Теперь о том, как работает код принимающий ввод от пользователя. Он сперва модифицирует заголовок окна (строка №5). Затем печатает в файл последней реплики сообщение-уведомление о своём подключении и дописывает сообщение к истории. При доступе к файлу реплики используется примитивный механизм критических секций (чуть ниже рассмотрим, как он работает). Далее в цикле (строки 11-19) производится получение от пользователя строк данных и их запись в файл реплики и допись в файл истории.

Функция входа в критическую секцию в файл, используемый для синхронизации, циклично записывает случайное число. До тех пор пока оно не окажется там при повторном считывании. Если на момент запуска функции файл существует, также осуществляется небольшая задержка. Задержки реализуются через ping>nul.

Функция выхода из критической секции просто удаляет файл синхронизации.


Теперь про результат


Имеется чат, обладающий следующими качествами:
1. Разделение по чат-группам (много групп и много пользователей)
2. Получение истории общения новыми участниками
3. Общение по сети (выложить скрипт в расшаренную папку и запустить с разных компьютеров)

При запуске, скрипт спрашивает имя чат-группы и имя пользователя.


После ввода требуемых данных, появляется второе окно, служащее консолью для ввода:


Теперь запущу этот же BAT-файл (он лежит в расшаренной папке) с другого компьютера сети.


После ввода того же самого имени чата и имени нового пользователя опять же появится второе окно для ввода данных на отправку.



Теперь попробуем пересылать сообщения между абонентами:


Теперь подключимся с третьего компьютера:



И увидим следующую картину:


Внимание! Замечен непонятный баг в win7 x64 при запуске скрипта из сетевой папки //***. Третья строка скрипта pushd "%~dp0" интерпретируется очень долго. Очень долго разбирается %~dp0, попробуйте просто echo %~dp0 вызвать — это как минимум странно. Если подождать минуты 2-3, то всё будет работать нормально... в WinXP таких проблем нет.

Предупреждение: при каждом запуске скрипта из сетевой папки в «Моём Компьютере» будут плодиться сетевые диски с буквами Z: Y: X: и т.д. После перезагрузки они пропадут без следа.

И конечно же ссылка на код: http://codepad.org/rvFN13LI

А также полезные ссылки:
1. Работа с путями в BAT: http://www.microsoft.com/.....
2. И вообще по написанию BAT-ников: http://www.microsoft.com/.....

UPDATE:
Если вам довелось использовать этот чат по его прямому назначению, кхе-кхе)) Будьте добры оставьте комментарий о полученных ощущениях.

9.1

голосов: 40
2011.06.16 20:09 // ftuls источник: ХабраХабр теги: microsoftwindows

Новый контент

Hostname lookup своими руками! читать

Хэш нам не преграда, потому что нам его не надо! читать

Startup Delayer 3.0.319: управление автозагрузкой приложений читать

Чертовски хороший LAMP: Пошаговое руководство по установке стека (L)AMP на FreeBSD читать

Tweak-7 1.0.1125: твикер для Windows 7 или как оптимизировать работу Windows 7 читать

Linux и 3G модем. Определение, настройка для подключения к сети. читать

Cистема шифрования TrueCrypt читать

Многопользовательский чат на BAT читать

Исследование: администраторы баз данных мало заботятся о безопасности читать

Оффлайновый способ хранить пароль читать

Спам — как средство передачи шифровок? читать

Мониторинг жёстких дисков при помощи SMART читать

Повышение производительности netfilter, использование ipset читать

Дело об отказавшей системе читать

Атаки на домен: завладеваем корпоративной сетью читать

Теги

adobe android anonymous apache apple assembler brutforce bsd c++ cgi chrome ddos delphi djvu dns facebook fingerprinting firefox freebsd ftp google html http ibm icq inattack intel internet internet explorer ip it java javascript linux livejournal mail microsoft mysql network pdf perl php python scanner security shell skype sms softice twitter unix visual c++ web wi-fi wikileaks windows xml xss администрирование алгоритм анонимность арест архив атака базы данных безопасность браузер брутфорс взлом вирус вирусы вконтакте домен защита игры интернет исследования кибертерроризм крис касперски мыщъх обратная разработка операционная система пароль первая полоса перехват данных подбор поиск поисковик поисковые системы пользователь программирование программы процессор разработка разработки реверсинг россия Руссинович руткит самоучитель сети социальная сеть спам спецслужбы справочник статистика суд сша телефон теория технологии троян учебник уязвимости уязвимость форум хакер хакеры яндекс
© INATTACK 2003 — 2012

Взлом

— искусство,

Хакер

— его творец.