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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 | Цитировать | Сообщить модератору
нет, у меня ВинХП СП3 рус.
Проверь, нет ли в строках в chatlist.txt лишни пробелов в конце. У меня поначалу был такой глюк, долго искал причину, но теперь я его давно уже устранил. А у тебя все еще не устранился.

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



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

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



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

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Пробелов в конце не должно быть, иначе findstr не правильно отрабатывает.
Проверь эту строку в listener_loop:
echo %%~a>>"%msgflist%"
Пробела между a и > не должно быть.

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov
афигеть, не думал, что пробел в конце будет такой эффект оказывать.
Поправил код, чтоб в этом месте пробелы не влияли на работу.

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, теперь не влияют, а где поставить пробел между сообщениями пользователей?

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



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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Клево..!
Слушай, это получается что на каждое сообщение отдельный файл он делает и папка за целый день радувается в объеме?

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov
Ну ты же помнишь, что я писал про удаление старых файлов. Они будут удаляться время от времени.  
Схема удаления такая: проводятся выборы (чтоб не слишком часто пытаться удалять), начинаем удалять если текущее количество минут >30, удаляем все файлы, дата и час изменения которых не равно текущему.
Так что каждый час файлы будут удалять, конечно в случае, если кто-то чатится.
 
Сделал приватные комнаты:
Код

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это мыизбавились я так понимаю от проблем с одновременным нажатием на ввод, правильно?
 
Добавлено:

Цитата:
Ну ты же помнишь, что я писал про удаление старых файлов. Они будут удаляться время от времени.  

Понял, забыл... )))
 

Цитата:
Сделал приватные комнаты:

Щас по сети проверю, 10 мин....
 
Добавлено:
Пароль не принимает тот который установлен в чате, ввожу любой другой, он пускает в приват.
И если на пару минут оставить чат открытым в окно чата само пишется "dustman", это что?
 

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



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

Цитата:
Это мыизбавились я так понимаю от проблем с одновременным нажатием на ввод, правильно?  

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

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



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

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



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

Цитата:
Пароль не принимает тот который установлен в чате, ввожу любой другой, он пускает в приват.

У меня все путем. Может опять пробелы где-то мешаются, правда не могу понять где.

Цитата:
И если на пару минут оставить чат открытым в окно чата само пишется "dustman", это что?  

Это как раз мусорщик сработал поправил этот момент. Обнови код.

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



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

Цитата:
Это как раз мусорщик сработал

А, понял.

Цитата:
поправил этот момент. Обнови код.

Почему-то только со второго раза понимает пароль, всегда. Т.е сначала просит, я ввожу, он второй раз просит (типа не верно), я то же самое ввожу, только тогда он просит имя придумать.
И вот еще глюк -
   
Это я просто с рабочего стола запустил его. А с сетевой шары все ок.
 
Добавлено:

Цитата:
Пароль не принимает тот который установлен в чате, ввожу любой другой, он пускает в приват.

Я ПОНЯЛ ЧТО ПРОИСХОДИТ.
Короче когда второй чел входит, чат просит ввести пароль (уже установленный первым челом) для привата. Тот вводит правильный пароль, и тут же выходит сообщение что мол ПРИДУМАЙТЕ пароль для чата. Соответственно второй чел может уже ввести совсем другой пароль, а старый перезапишется, и третий чел уже по первому паролю не сможет войти.
 
Добавлено:
Вот это окно входа в приват второго чела -
   
 
Добавлено:
По идее он не должен требовать второй раз ввод пароля, следующий пункт должен быть имя чела.

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov
Не могу у себя воспроизвести такую ситуацию.  
Такого не может быть , т.к. сообщения на ввод пароля разные, они находятся в разных ветках ifа и не могут пересекаться. Или я чего-то не понимаю

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот еще прикол не большой -
   
Как видишь 2 пользователя в привате, первый так и не увидел что второй присоединился к чату (ждать будет до утра))), и сообщения некоторые теряются почему-то...
 
Добавлено:
Ну вот, пока я писал это сообщение чат просто простаивал и вылезла ошибка -
   
 
Добавлено:

Цитата:
Не могу у себя воспроизвести такую ситуацию.  

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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ТMark_Titov
Расскажи как ты запускал, чтоб получить такой результат.
Это по сети на разных компах?
 
Добавлено:

Цитата:
А ты просто у себя сначало под одним юзером зайди, а потом под вторым и все.  

Я так иделаю.

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



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

Цитата:
Расскажи как ты запускал, чтоб получить такой результат.

С двойным пароле, да по сети на разных компах.

Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 21:51 06-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