Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Консольный чат для локальной сети.

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте уважаемые гуру.
 
Представляю вашему вниманию чат для локальной сети. Автор не я, нашел в сети.
Нужна ваша помощь в допиливании батничка чата для локальной сети.

 

 
Батник хорош тем что все реализованно в одном файле и только встроенными средствами!
Вот он сам - (тестировал на win XP, если кто может протестируйте пож-ста на win7)
 

Код:
@echo off
color 1F
title Chat v 1.2
cls
pushd "%~dp0"
if "%~1" == "talk_widget" goto talker
 
set sndMsg=%SystemRoot%\Media\chimes.wav
 
:auth
echo.
echo.********************************************************************************
echo.                         —Ђ’ „‹џ ‹ЋЉЂ‹њЌЋ‰ ‘…’€ V 1.2
echo.********************************************************************************
echo.
echo.
echo.
echo.
echo           ‚ўҐ¤ЁвҐ -®¬Ґа Є®¬- вл ¤«п з в  ў зЁб«®ў®¬ д®а¬ вҐ (1-999):
echo.
set /p chat=^>                                    
echo.
echo                    ЏаЁ¤г¬ ©вҐ бў®Ґ Ё¬п ¤«п з в  (Ђ-џ \ A-Z):
echo.
set /p nick=^>                                    
start call %0 talk_widget %chat% %nick%
 
:listener
cls
call title "| Љ®¬- в  з в : %chat% | Џ®«м§®ў вҐ«м: %nick% |"
if exist %chat%_history type %chat%_history
if not exist %chat% echo. 2>%chat%
 
:listener_loop
ping 127.0.0.1 -n 1 -w 20 > nul
set oldtext=%text%
set /p text=<%chat%
if not "%text%" == "%oldtext%" type %chat% & echo.
goto listener_loop
 
:talker
set chat=%~2
set nick=%~3
cls
call title "| Љ®¬- в  з в : %chat% | Џ®«м§®ў вҐ«м: %nick% |"
call ::cs_in
echo [%time:~0,-3%] Ї®«м§®ў вҐ«м "%nick%" ЇаЁб®Ґ¤Ё-Ё«бп Є з вг.>%chat%
call ::cs_out
echo [%time:~0,-3%] Ї®«м§®ў вҐ«м "%nick%" ЇаЁб®Ґ¤Ё-Ё«бп Є з вг.>>%chat%_history
echo. %msg% >>%chat%_history
 
:talker_loop
cls
echo.
echo ‚ и ⥪бв б®®ЎйҐ-Ёп:
echo.
set /p msg=^>
call ::cs_in
echo [%time:~0,-3%] - %nick%: >%chat%  
echo - %msg% >>%chat%  
start /min sndRec32.exe /play /close %sndMsg% 1>nul 2>nul
call ::cs_out
echo [%time:~0,-3%] - %nick%: >>%chat%_history
echo - %msg% >>%chat%_history
echo. >>%chat%_history
goto talker_loop
 
:cs_in
if exist "%chat%_cs" ping 127.0.0.1 -n 1 -w 50 > nul
set cs_value=%RANDOM%
 
:cs_in_loop
echo %cs_value%>%chat%_cs
set /p ret=<%chat%_cs
if "%ret%" == "%cs_value%" exit /b
ping 127.0.0.1 -n 1 -w 10 > nul
goto :cs_in_loop
 
:cs_out
del %chat%_cs
exit /b

 
Вообщем суть проблемы на данный момент такова -
Нужно прикрутить для него приватный чат, на данный момент это пока общий (ни чем не защищенный, ждя всех).
А то часто при разговоре 2-х людей кто-нибудь третий влезет и приходится сваливать от туда и создавать новый чат и т.д.
Т.е. при создании комнаты чата, нужно выбрать какой чат создавать "Приватный" или "Общий", если приватный, то сразу после ввода номера комнаты чата выдается запрос на создание пароля. Пароль  и номер комнаты чата соответственно говориться собеседнику и тот присоединяется. Сам пароль (хоть и примитивно, но все же простым юзерам не догадаться) пишется в корень папки с чатом, и приприсоединении второго юзера чат считывает этот пароль и юзер заходит.
Ну это я образно описал, думаю что концепция понятна.

на данный момент пока только это, в процессе тестирования может еще что вылезет.
На всякий случай выкладываю Программа конвертации из DOS в Win кодировку и обратно., пригодится для русского языка для DOS.
 
МОЖЕТ КТО ЕЩЕ ЧТО МОЖЕТ ПРЕДЛОЖИТЬ В ПЛАНЕ УСОВЕРШЕНСТВОВАНИЯ ЧАТА, БУДУ БЛАГОДАРЕН.
(основной критерий - что бы все было встроенными средсвами windows и в одном файле).
 
Заранее благодарю откликнувшихся.

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 18:11 03-08-2011 | Исправлено: Mark_Titov, 17:17 05-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Очередная версия
Изменения:
1.На файл истории приватных чатов устанавливается атрибут скрытый. Пароль в нем хранится в первой строке, без других идентификационных символов.
2.Сделал автомат. Для его запуска запускай батник с параметром talk_auto, второй параметр указывает время задержки между сообщениями в миллисекундах, по умолчанию 1000 (1 сек.). Автомат генерит с заданным интервалом сообщение.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:36 08-08-2011 | Исправлено: res2001, 17:32 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Благодарю res2001, сейчас буду тестить...
 
Добавлено:

Цитата:
запускай батник с параметром talk_auto

Из командной строки чтоль?!
Или в коде?
 
Добавлено:
Я там вижу :talkerauto, а как его запустить, он вроде не закоментирован?
 
Добавлено:
И еще, скажи, собирающийся мусор в таком формате это нормально?

Код:
08082011144209,363668

 
Добавлено:
Может папку с мусором тоже скрытой сделать? От любопытных юзеров подальше?

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 13:38 08-08-2011 | Исправлено: Mark_Titov, 13:58 08-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Из командной строки чтоль?!  

Да из ком.строки при запуске батника указывай параметр.
 
Поправил код, нашел ошибку связанную с ... если закрыть крестом окно ввода сообщений в определенный момент, то может остаться не удаленным файл флаг блокировки записи в файл истории (%chat%_cs), и все чатеры подвисают, не могут отправить сообщение пока файл не удалится.
Сделал обхот по такому алгоритму - если в течение 5  сек. файл %chat%_cs не удаляется, значит считаем, что как раз такая ситуация и игнорируем наличие флага, т.е. начинаем писать в файл истории. Потом, после записи, этот файл удаляется.
 
Добавлено:

Цитата:
И еще, скажи, собирающийся мусор в таком формате это нормально?  

Если мусор убирается, то нормально.

Цитата:
Может папку с мусором тоже скрытой сделать?

можно
 
Добавлено:
сделано

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:09 08-08-2011 | Исправлено: res2001, 14:47 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запустил автотестирование, вот такая ошибка -
 
   
 
Добавлено:
и на авто, я не видно папки с сообщениями, даже скрытой...

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 14:18 08-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Обнови код.
Сделал автомат в таком же режиме как ручной чат, т.е. создается окно чата и окно ввода. Как обычно.
Ошибка, думаю, должна уйти.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:46 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ошибка исчезла.
Автотестирование я так понимаю только локально можно запускать, по сети одновременно с нескольких компов в одну комнату чата никак да?
 
Добавлено:
К стати, верни пож-ста заголовок при автомате "АВТОТЕСТИРОВАНИЕ", полезно однако видеть что это режим-автомат.
 
Добавлено:
Да и в заголовке для привата тоже напиши пож-ста не просто "Комната чата", а "Приватная комната чата", если не затруднит. Что бы видеть где приват, а где общий чат.
 
Добавлено:
Е-мае, за 30 мин автотестирования смотри сколько их -
 
   
 
А чего мусорщик не чистит?

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 14:55 08-08-2011 | Исправлено: Mark_Titov, 15:24 08-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
А чего мусорщик не чистит?

Мусорщик должен чистить файлы с датой/временем модификации не равной текущей дате и текущему часу. Так же он запускается, когда количество минут >30.
Т.е. от текущего времени он начнет запускаться в 16:30 и удалит все файлы созданные до 08.08.2011 16:00.
Протестируй. Можно время перевести, я у себя так его тестировал.

Цитата:
Автотестирование я так понимаю только локально можно запускать, по сети одновременно с нескольких компов в одну комнату чата никак да?  

Можно и по сети. Алгоритм работы робота такой же как и в ручном режим, со всеми блокировками, проверками и т.п.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:08 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А по поводу заголовков окна приватного чата и режима теста можно прописать? А то я уже в коде там запутался )))...
 
Добавлено:
Кстати, попробуй локально (не по сети) второго пользователя в автотесте приватного чата запустить, у меня пароль говорит не верный...

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 16:12 08-08-2011 | Исправлено: Mark_Titov, 16:19 08-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov

Цитата:
А по поводу заголовков окна приватного чата и режима теста можно прописать?

сделал. обновляйся.

Цитата:
Кстати, попробуй локально (не по сети) второго пользователя в автотесте приватного чата запустить, у меня пароль говорит не верный...

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

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:48 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Может у тебя и правда пароль не правильный был?

Да тупо 000 поставил и все - не принимает зараза )))

Цитата:
Мусорщик у тебя работает?

Через 20 мин будет пол часа, отпишусь...

Цитата:
сделал. обновляйся.

Спасибо, щас обновлюсь.
 
Добавлено:
Ну вот например с права окно первого юзера, с лева пытаюсь завести в приват второго -
 
   
 
И самое что прикольное, закрывая крестиком окно самого чата, окно ввода текста продолжает отсылать сообщения. Может все таки получится в автотестировании не выводить окно ввода текста? Или геморойно?
 
Добавлено:
Да, и в аторежиме ты классно  придумал [Автомат], может вообще при тестировании убрать пункт "Введите имя пользователя"? Просто будет -

Код:
[18:14:23] - [Автомат]:
- 571277

Как думаешь?

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 17:01 08-08-2011 | Исправлено: Mark_Titov, 17:12 08-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
И самое что прикольное, закрывая крестиком окно самого чата, окно ввода текста продолжает отсылать сообщения. Может все таки получится в автотестировании не выводить окно ввода текста? Или геморойно?

Вобщем да, геморойно, да и не нужно. Это все таки фишка для тестирования не более того.
Сейчас я робота очень удачно прикрутил в процедуру ручного чата, добавил только пару if и все. А чтоб отказаться от окна ввода, придется перекраивать процедуру чата. Вобщем, нафиг надо.
У меня с паролями все путем. Опять не могу воспроизвести твою ошибку.
Может у юзера прав на каталог нет?
 
Добавлено:

Цитата:
Как думаешь?

можно
 
Добавлено:
готово.
Обновляйся.
Что мусорщик?

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:27 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мусорщик сработал, а можно время очистки уменьшить до 5 минут хотябы? Столько хлама там.
Если человек 20-30 хотябы будут в чате это туча мусора сразу, а если больше 30, представляешь?
 
Добавлено:

Цитата:
Может у юзера прав на каталог нет?

Сижу под админом.

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 17:56 08-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
res2001, вообщем проблема двойного пароля (ты будешь смеяться) была в лишних пробелах в конце кода. Убрал - все пошло на ура.
У меня вопрос, в коде есть строка -

Код:
>"%msgflist%" 2>nul dir /b /a-d /od /tw "%chatpath%\*" || >"%msgflist%" echo BatChat

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

Код:
:dustman
set "cleanborder=6553"

отвечают за время очистки от мусора? Это в секундах?
 
Еще маленькая деталь, можно формат времени подправить? Сейчас такой формат -

Код:
[ 3:43:58]

...а хотелось бы такой -

Код:
[03:43:58]

 
Добавлено:
Тестил на автомате 3 юзера в привате, сообщение попадали в одно и то же время, соответственно ошибки были и на экран лезли. Думаю что в реале таких совпадений не будет конечно, но может скрыть ошибки когда процесс занят, что бы люди не пугались?
 
Добавлено:
К стати, попробуй в место номера комнаты, пароля, имени ввести звездочки, слеши, точки и запятые.
Вот как от этого избавится, я не знаю... Может в коде прописать что бы только цифрами вводили?
 
Добавлено:
Я там не много поправил (косметика в основном), если тебя не затруднит можно в моем файле все изменения сделать?
А то больше сил на всякие кривотолки уходит, а так уже проще будет я думаю.
Скачать Чат

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 02:20 09-08-2011 | Исправлено: Mark_Titov, 03:21 09-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov

Цитата:
...так вот то что выделенно красным, это что?  

Смысл этой строки вообще в том, чтобы при запуске чата в случае если каталог с сообщениями не пустой сгенерить список отображенных файлов из уже существующих в каталоге файлов. Т.к. первоначальное отображени идет из файла истории, то отображать существующие в каталоге файлы не надо.
А то что выделено красным - это для варианта когда в каталоге нет файлов, чтоб просто создать файл отображенных файлов, а строка BatChat - ну это просто строка, которая заведомо не будет содержаться в именах файлов.

Цитата:
set "cleanborder=6553"  

Нет это не время. Это 20% от максимально возможного числа, возвращаемого переменной %RANDOM%, эта цифра как раз и отвечает за "выборы" будем чистить или не будем. Т.е. чистка мусора происходит примерно в 20% случаев в заданном интервале времени.

Цитата:
Мусорщик сработал, а можно время очистки уменьшить до 5 минут хотябы?

Можно, сделаю.

Цитата:
Столько хлама там.  

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

Цитата:
...а хотелось бы такой -  

можно, но нужно ли. Сейчас это просто то что возвращает %time%. Зачем навешивать лишнее? Я бы не делал.

Цитата:
соответственно ошибки были и на экран лезли.

Какие ошибки, закинь скрины. У меня не было ошибок.

Цитата:
К стати, попробуй в место номера комнаты, пароля, имени ввести звездочки, слеши, точки и запятые.
Вот как от этого избавится, я не знаю... Может в коде прописать что бы только цифрами вводили?  

Все служебные символы cmd нельзя будет использовать в пароле, скорее всего.
Протестирую этот момент.

Цитата:
Я там не много поправил (косметика в основном)...

Зачем по убирал весь формат кода
 
 
 
 
Добавлено:
Кстати, тестировал тут на компе, где нет аудио, т.е. совсем нет - постоянно вылазит окно с ошибкой от sndrec32. В общем то не страшно - оно даже не останавливает процесс, но надо жмякать на Ок, чтоб его убрать. Неприятно в общем.
Думаю, может сделать переменную, типа будем музыку играть или нет?
 
Добавлено:
Кстати sndrec32 под Вин7 нет.
Протестировал пароли из спец.символов cmd - все нормально прокатывает. Сам удивился.
Если у тебя ошибки, давай скрины и какой пароль в это время выставлен.
Так же тестил с 3 роботами на одном компе под разными юзерами - не было ни одной ошибки.
 
Добавлено:
Тестировал твоим вариантом.
 
Добавлено:
Проблемы есть, в случае наличия спец.символов в номере комнаты. Но это уже файловая система виновата, ничего тут не сделать.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:41 09-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Кстати, тестировал тут на компе, где нет аудио, т.е. совсем нет - постоянно вылазит окно с ошибкой от sndrec32.

Где нет аудио можно бипером играть, вот возми тут -
Бипер
На семерке бипером воспроизводить.
 
Добавлено:
Я тут нарыл еще один чат, чувак круто начал, но все громоздко.
Может что найдешь для реализации в нашем варианте. Вообщем для разбора-
ЧАТ ДЛЯ РАЗБОРА

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 10:08 09-08-2011 | Исправлено: Mark_Titov, 10:10 09-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov
бипером то можно играть, только как определить, что на компе нет аудио, вот в чем вопрос.
Я пока ответа не знаю.
Разве, что везде бипером играть.
 
Добавлено:
Mark_Titov

Цитата:
Я тут нарыл еще один чат, чувак круто начал, но все громоздко.  

Посмотрел. Схема работы там не такая как у нас - там клиент-серверная архитектура, т.е. на сколько я понял запускается серверная часть на выделенной машине, клиенты шлют запросы серверу, сервер генерит ответы в файлы. Запросы/ответы так же передаются через файлы.
Комнат вроде нет, весь чат в одной комнате. Чтоб сделать другую комнату надо сервер запускать в другом каталоге и изменять файл конфигурации у клиента.
К тому же никаких блокировок и синхронизации там и в помине нет, а это не правильно.
По моему там много лишнего наворочено. Удивляет обилие @
 
У меня в начале тоже была идея о клиент-серверной архитектуре. Для чата это правильней. Но батниками все равно нормально это не сделать, поэтому выбрал наш путь.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:22 09-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Очередная версия.
Уменьшил время очистки до 10 мин.
Вывод музыки в Вин7 через бипер, в ХП - sndrec32
Избавился от кнопки sndrec32, которая появляется в панели задач при проигрывании музыки.
Что у тебя с ошибками?

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:51 09-08-2011 | Исправлено: res2001, 08:29 12-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
res2001, извини что не отвечал долго, проблемы с инетом, код обновил, но что-то звука пока нет.
Я переодически как с инетом будет по проще буду выходить сюда.
Больше ошибок пока не обнаружил, но тестирование в процессе.

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 18:55 11-08-2011
res2001



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Поправил звук.

Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:29 12-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Компьютеры » Программы » Консольный чат для локальной сети.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru