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

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

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
10 минут висит 2 чата в на одной машине - ошибок нет. Сообщения то же не пропадали.

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov
Ты без конечных пробелов скопировал?
Я запускал с раб.стола - тож все нормально, щаз вот еще юзера завел, запустил третий чат.
Ошибка говорит о том, что он пытается выполнить команду and, а такой команды в системе нет. Но и в батнике это слово встречается только в переменной %RANDOM%, не могу понять откуда может взяться такая ошибка. Воспроизвести у себя то же не могу.
И двойного пароля у меня нет. :-(
 
Еще раз выкладываю код
 
Добавлено:
20 минут, 3 чата, полет нормальный

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ладна, хватит на сегодня.
В понедельник устрой тестирование по сети.
Кстати, можно будет написать автомат, чтоб он сам каждую секунду кидал сообщение. Будет стресстестирование

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



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

Цитата:
Ладна, хватит на сегодня.

Ок, спасибо тебе res2001, до понедельника.
 

Цитата:
Кстати, можно будет написать автомат, чтоб он сам каждую секунду кидал сообщение. Будет стресстестирование

Не плохая идея..!
 
Добавлено:
А по поводу ошибки с доступом, может там этот мусорщик вмешивается в процесс?

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



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

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



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

Цитата:
К стати, а почему бы не сделать что бы посланный текст записывался в новь созданный  временный файл, и после вывода в окно чата сразу удалялся? Тогда и кучи файлов не будет и папок всяких и гемороя меньше. Как думаешь?

В самой первой версии так и было, но откуда ты знаешь сколько в данный момент пользователей смотрит чат, у скольких сообщение отобразилось у скольких нет. Нигде этого учета нет. Если делать так как ты пишешь, надо все это реализовывать, а это намного сложнее текущего варианта.

Цитата:
Вообщем проблема ошибки запуска с раб стола снимается, это оказывается только у меня такая проблема, на других компах нормально.  

Может у тебя каталог рабочего стола не стандартный?
 
Мусорщика проверю.

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



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

Цитата:
Может у тебя каталог рабочего стола не стандартный?

C:\Documents and Settings\Admin\Desktop
Как и у всех юзеров (только имена разные)

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



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

Цитата:
Так файлы в папке будут удаляться, а сами папки остаются. Их как я понял в ручную нужно будет чистить?  

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

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



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

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

Вот-вот, это проблема...

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



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

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

Пароль, пожалуй, можно в файл истории пихнуть.  
 
Добавлено:
Сделал пароль в файле истории. Обновил код.
 
Добавлено:
Mark_Titov

Цитата:
Вот-вот, это проблема...

В чем проблема?
 
Добавлено:
Кстати, кинь сюда вывод
dir /-c /a-d /od /tw
на любом каталоге, хочу посмотреть формат вывода.
и вывод
echo %date%-%time%
Может заморочки с мусорщиком у тебя связаны из-за различия отображения форматов даты/времени.

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



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

Цитата:
Кстати, кинь сюда вывод

07.08.2011-21:38:49,92
 
Добавлено:

Цитата:
Пароль, пожалуй, можно в файл истории пихнуть.  


Код:
password=000

Может лучше не палить что это пароль? Просто без password=
 
А код обновил и все замечательно с раб стола запускается. Не понятно что было..!?
 
Добавлено:
Слушай, и второй пароль исчез..! Супер..! Ты молодец..!
 
Может над уменьшением хлама в папке подумаем? Или как от папки совсем избавится?
Ну вообщем что бы свести к минимуму кол-во хлама и ручной работы. Или как?

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



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

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



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

Цитата:
Может лучше не палить что это пароль? Просто без password=

Можно без passwordа, но тогда надо его чем-то заменять. password= нужен для идентификации, что это действительно пароль, а не кусок сообщения. Предложи вариант идентификации, переделаю.
Идентифицировать наличие пароля надо для того чтоб отличить приватный чат от не приватного.

Цитата:
Не понятно что было..!?  

Да нет, понятно стало, когда наткнулся. Непонятно, почему у меня работало, иначе сразу бы исправил.

Цитата:
Слушай, и второй пароль исчез..

???? а вот это не понятно ну да ладно.

Цитата:
А в привате вообще убрать историю, так как это приват же. Как думаешь?

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

Цитата:
По поводу файла истории, может этлементарно делать его сразу с атрибутом скрытый, что бы хотя бы юзеры не видели его?  

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

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



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

Цитата:
Идентифицировать наличие пароля надо для того чтоб отличить приватный чат от не приватного.

Ну это понятно. ))

Цитата:
Можно без passwordа, но тогда надо его чем-то заменять. password= нужен для идентификации, что это действительно пароль, а не кусок сообщения. Предложи вариант идентификации, переделаю.

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

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

Согласен, может, ну это уже издержки я считаю. ))) Супер-пупер аутентификацию делать геморой однако.

Цитата:
Не плохая мысль, только я бы сделал скрытым только истории приватных чатов. Так сразу можно и идентифицировать, что это приватный чат и первая строка - пароль.  
Согласен?

Согласен..

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



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

Цитата:
Согласен..

Ок. Буду делать.

Цитата:
Супер-пупер аутентификацию делать геморой однако.

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

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



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

Цитата:
пусть заюзают какой-нить клиент-серверный чат со всеми наворотами.

Это точно..))

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