Chat bat: Многопользовательский чат на BAT / Хабр

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

Был период, когда в универе задали сделать несколько чатов. В зависимости от вариантов, были заданы различные способы взаимодействия программ от сокетов до майлслотов (mailslot). Когда задания были прикончены, остались силы взяться за скрипты 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:
Если вам довелось использовать этот чат по его прямому назначению, кхе-кхе)) Будьте добры оставьте комментарий о полученных ощущениях.

‎App Store: Bat Messenger — Anonymous chat

Снимки экрана (iPhone)

Описание

Bat Messenger is an instant messaging app with 3 million real users that from all around the globe.

**Bat Messenger provides you the fastest way to meet new friends. **

Message Chat: You can send and receive text, images, contacts, file, audio and video to your contacts.

Random Video Chat: Random match and video chat with gorgeous girls and handsome boys.

Broadcast: Send private message to maximum 500 contacts with 1 broadcast.

Explore: Visit [Explore] for daily updates about you and your friends. And you will meet users from all around the world.

**Bat Messenger is the most secure messaging app in the world. **

Anonymous: Your registration doesn’t need any personal information and access your contacts, your personal information is unviewable

Secure Your Message: [Retract & Burn after reading] will retract selected messages that record from both you and the opponent user’s device. Anyone take a screenshot, you will receive a notice.

Destroy Password: Enter your destroy password on the lock screen to destroy Bat account during an emergency.

Anti-data Recovery: Retract single chat record or retract all messages between Bat Messenger users without time limit. The operation is unrecoverable.

Technique Feature: All messages are end to end encryption secured. Any third party cannot read your message.

Your feedback is always welcome, please contact us if there is any problem.
Terms of Service: https://bat.me/terms.html
Privacy Policy: https://bat.me/privacy.html
Official Website: https://bat.me/

Версия 3.6.0

1. Optimized video call
2. Fixed crash bug

Оценки и отзывы

1 оценка

language

Please add Russian language

Currently, Bat Messenger supports English, Simplified Chinese and Traditional Chinese. For the Russian language, we will take it into consideration.

Разработчик BatWord, Inc указал, что в соответствии с политикой конфиденциальности приложения данные могут обрабатываться так, как описано ниже. Подробные сведения доступны в политике конфиденциальности разработчика.

Не связанные с пользова­телем данные

Может вестись сбор следующих данных, которые не связаны с личностью пользователя:

  • Геопозиция
  • Пользова­тель­ский контент
  • Диагностика

Конфиденциальные данные могут использоваться по-разному в зависимости от вашего возраста, задействованных функций или других факторов. Подробнее

Информация

Провайдер
BatWord, Inc

Размер
271,6 МБ

Категория
Социальные сети

Возраст
17+ Неограниченный доступ к Сети Малое/умеренное количество тем, предназначенных только для взрослых Малое/умеренное количество реалистичного насилия Малое/умеренное количество контента сексуального или эротического характера

Copyright
© 2019 BatWord, Inc.

Цена
Бесплатно

  • Поддержка приложения
  • Политика конфиденциальности

Другие приложения этого разработчика

Вам может понравиться

‎Bat Messenger — Анонимный чат в App Store

Скриншоты iPhone

Описание

Bat Messenger — это приложение для обмена мгновенными сообщениями с 3 миллионами реальных пользователей со всего мира.

**Bat Messenger предоставляет вам самый быстрый способ познакомиться с новыми друзьями. **

Чат сообщений: вы можете отправлять и получать текст, изображения, контакты, файлы, аудио и видео своим контактам.

Случайный видеочат: случайный матч и видеочат с великолепными девушками и красивыми парнями.

Широковещательная рассылка: Отправить личное сообщение максимум 500 контактам с 1 широковещательной рассылкой.

Исследовать: посетите [Исследовать] для ежедневных обновлений о вас и ваших друзьях. И вы встретите пользователей со всего мира.

**Bat Messenger — самое безопасное приложение для обмена сообщениями в мире. **

Анонимный: Ваша регистрация не требует личной информации и доступа к вашим контактам, ваша личная информация недоступна для просмотра

Защитите свое сообщение: [Отозвать и записать после прочтения] отзовет выбранные сообщения, которые записываются как от вас, так и от оппонента устройство пользователя. Любой, кто сделает скриншот, получит уведомление.

Пароль уничтожения: введите свой пароль уничтожения на экране блокировки, чтобы уничтожить учетную запись Bat во время чрезвычайной ситуации.

Защита от восстановления данных: отозвать одну запись чата или отозвать все сообщения между пользователями Bat Messenger без ограничения по времени. Операция необратима.

Техническая особенность: Все сообщения защищены сквозным шифрованием. Любое третье лицо не может прочитать ваше сообщение.

Ваши отзывы всегда приветствуются, пожалуйста, свяжитесь с нами, если возникнут какие-либо проблемы.
Условия использования: https://bat.me/terms.html
Политика конфиденциальности: https://bat.me/privacy.html
Официальный сайт: https://bat.me/

Версия 3.6.0

1. Оптимизирован видеозвонок
2. Исправлена ​​ошибка сбоя

Рейтинги и обзоры

341 Рейтинг

Отлично, но нуждается в некоторых улучшениях

Я пользователь с Ближнего Востока, и мне очень нравится мессенджер Bat, сходство с приложением BBM поразительно, также у меня есть некоторые отзывы, которые могут помочь привлечь многих бывших пользователей BBM из Ближнего Востока.

1. Особенностью, которая нам очень понравилась при использовании BBM, была трансляция, которая есть и у вас.

2. Проблема, с которой сталкиваются многие пользователи, — это предварительный просмотр уведомлений, когда кто-то отправляет сообщение, а я вне приложения, он только говорит, что сообщение было получено или что-то в этом роде, но не показывает, что сообщение мы.

3. Увеличить количество людей, которых можно добавить в рассылку, а добавление возможности выбора всех контактов было бы максимально удобным и комфортным для пользователей.

4. Имея возможность изменить фон из галереи

5. нам также нужна возможность отключить уведомления определенных людей, а не отключать звук всех, это может помочь предотвратить шум, если у кого-то около 500 контактов или более

Я надеюсь эти предложения не были слишком большими или хлопотными для вас, ребята, нам нравится, как ваше приложение выглядит прямо сейчас, и мы считаем, что это может быть лучшее социальное приложение, которое мы хотим, с небольшим улучшением, которое мы хотели бы видеть.

С уважением,
Абдулла

Привет Абдулла, спасибо за ваши предложения. Мы выпустим новую версию в течение этой недели, чтобы улучшить трансляцию. Мы уже добавили фон в v.3.1.8. А что касается пунктов 2 и 5, мы учтем это в будущих обновлениях.

Слишком много попыток

Проблема в том, что когда я пытаюсь что-то опубликовать, мне кажется, что «Слишком много попыток, повторите попытку позже», и я жду целый час, чтобы опубликовать другой пост! Это расстраивает, пожалуйста, исправьте

Сколько постов вы уже опубликовали за день? Вы можете повторно отправить сообщение через 24 часа.

Привет. это некоторые

Привет. Вот некоторые примечания 1. Приложение не полностью совместимо с программой чтения с экрана. Используется программа чтения с экрана Voice
поверх операционной системы ios 12. Проблема в том, что я не могу читать сообщения, программа чтения с экрана не произносит 2. Есть очень медленная отправка и получение сообщений с последним обновлением 3. Для арабского файла файл требует некоторых изменений в некоторых предложениях А также добавить несколько дополнительных предложений в некоторых местах, не переведенных на арабский язык

Вот некоторые из замечаний, которые мы надеемся принять во внимание и принять наилучшие пожелания

Сколько времени занимает отправка и получение сообщений? По вопросам, связанным с арабским языком, пишите нам по адресу support@batmessenger. com.

Разработчик, BatWord, Inc, указал, что политика конфиденциальности приложения может включать обработку данных, как описано ниже. Для получения дополнительной информации см. политику конфиденциальности разработчика.

Данные, не связанные с вами

Могут быть собраны следующие данные, но они не связаны с вашей личностью:

  • Место расположения
  • Пользовательский контент
  • Диагностика

Методы обеспечения конфиденциальности могут различаться, например, в зависимости от используемых вами функций или вашего возраста. Узнать больше 

Информация

Продавец
БэтВорд, Инк

Размер
271,6 МБ

Категория
Социальная сеть

Возрастной рейтинг
17+ Неограниченный доступ в Интернет Нечастые/мягкие зрелые/наводящие на размышления темы Нечастое/мягкое реалистичное насилие Редкий/умеренный сексуальный контент и нагота

Авторское право
© 2019 BatWord, Inc.

Цена
Бесплатно

  • Тех. поддержка
  • Политика конфиденциальности

Еще от этого разработчика

Вам также может понравиться

BatChat — подкаст The Bat Conservation Trust — Ресурсы

BatChat — это подкаст от Bat Conservation Trust. Разработанный для его членов и более широкого сообщества по сохранению летучих мышей и представленный Стивом Роу, попечителем BCT и вице-председателем Дербиширской группы летучих мышей, он беседует с экспертами, а также с местными героями, чтобы рассказать вам истории из движения по сохранению летучих мышей. Новый выпуск выходит каждую вторую среду.

Спасибо Wildcare and Widlife Acoustics за спонсорство 4-го сезона BatChat

4-го сезона

Отправьте голосовое сообщение в BatChat! Мы хотим, чтобы вы познакомились с вашими любимыми опытами с летучими мышами в этом году. Неважно, впервые ли вы видели летучую мышь, возможно, вы заметили короткую тень, пролетевшую мимо, когда выходили из дома, возможно, вы проверяли ящики с летучими мышами в местной группе летучих мышей и видели летучих мышей впервые вблизи или увидели вид летучих мышей, которых вы никогда раньше не видели, возможно, вы считали насест летучих мышей этим летом, и произошло что-то необычное, может быть, вы слышали, как летучие мыши звучат на детекторе, и подумали, что это самое крутое вещь когда-либо! Если вы новичок в летучих мышах или опытный любитель летучих мышей, мы хотим услышать все о вашем любимом опыте с летучими мышами в этом году.

Запишите сюда свое голосовое сообщение. Не волнуйтесь, вы можете прослушать его и перезаписать, если он вам не понравится.

  • Эпизод 1, 9 ноября 2022 г. — Служба посещения летучих мышей с Крисом Смитом
  • Эпизод 2, 23 ноября 2022 г. — Находка века 2022 — TBC

Сезон 3

  • Эпизод 1, 3 ноября 2021: Гарет Джонс — исследования на всю жизнь
  • Эпизод 2, 17 ноября 2021 г.: Barbastelles at Paston Great Barn
  • Эпизод 3, 1 декабря 2021 г.: Детские книги с Эммой Рейнольдс 2021: Джон Расс
  • Эпизод 6, 12 января 2022: Библиотека вызовов летучих мышей с Мартином Куком
  • Эпизод 7, 26 января 2022: Летучие мыши в RHS Wisley
  • Эпизод 8, 9 февраля 2022: Сохранение летучих мышей в действии с Джимом Маллхолландом
  • Эпизод 9, 23 февраля 2022: Анджела Миллс; Коричневая ушастая летучая мышь Бобби
  • Эпизод 10, 9 марта 2022 г.: Национальная программа мониторинга летучих мышей с Филипом Бриггсом
  • Эпизод 11, 23 марта 2022 г. : Поместье Кнепп Ревайлдинг

Сезон 2

  • Эпизод 1 октября : Крис Пэкхэм
  • Эпизод 2, 11 ноября 2020 г.: Садоводство для летучих мышей с Джоэлом Эштоном
  • Эпизод 3, 25 ноября 2020 г.: Доктор Уинифред Фрик, Bat Conservation International
  • Эпизод 4, 9 декабря 2020 г.: Devon Greater Horseshoe Bat Project с Хелен Парр
  • Эпизод 7, 20 января 2021 г.: Уход в подполье для исследования гибернации Церкви с Барри Коллинзом

Сезон 1

  • Эпизод 1, 20 ноября 2019 г.: Прошлое, настоящее и будущее сохранения летучих мышей с Ширли Томпсон, MBE Год с Нильсом Буйяром
  • Эпизод 3, 20 ноября 2019 г.: Особняк Вудчестер с доктором Рэем Кэнэмом и доктором Роджером Рэнсомом
  • Эпизод 4, 4 декабря 2019 г.: Энтузиасты Натузиуса с Дэниелом Харгривзом
  • Эпизод 5, 18 декабря 2019 г.: Чудесные выходные в Уэльсе
  • Эпизод 6, 8 января 2020 г.: Музей естественной истории — Часть 1
  • Эпизод 7, 22 января 2020 г.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *