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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 | Цитировать | Сообщить модератору
Mark_Titov

Цитата:
Дело в том что я не силен в таких оборотах кода, я только пытаюсь еще..

Ну давай начнем.
Например надо создать уникальное имя файла для сообщения:
set msgfname=%chat%_%date:.=%%time::=%%RANDOM%
echo %msgfname%
 
И так далее, я говорю начни делать, я помогу где не понятно будет.

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



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

Цитата:
Ну давай начнем.

Ок, давай попробуем. Спасибо что помогаешь.

Цитата:
Например надо создать уникальное имя файла для сообщения:

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

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



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

Код:
 
:talker
set chat=%~2
set nick=%~3
cls
call title "| Комната чата: %chat% | Пользователь: %nick% |"
set msgfname=%chat%_%date:.=%%time::=%%RANDOM%  
call ::cs_in
echo [%time:~0,-3%] пользователь "%nick%" присоединился к чату.>%msgfname%
echo [%time:~0,-3%] пользователь "%nick%" присоединился к чату.>>%chat%_history
echo. %msg% >>%chat%_history
call ::cs_out
 
:talker_loop
cls
echo.
echo Ваш текст сообщения:
echo.
set /p msg=^>
set msgfname=%chat%_%date:.=%%time::=%%RANDOM%  
call ::cs_in
echo [%time:~0,-3%] - %nick%: >%msgfname%  
echo - %msg% >>%msgfname%  
start /min sndRec32.exe /play /close c:\WINDOWS\Media\chimes.wav 1>nul 2>nul
echo [%time:~0,-3%] - %nick%: >>%chat%_history
echo - %msg% >>%chat%_history
echo. >>%chat%_history
call ::cs_out
goto talker_loop  

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



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

Код:
[17:33:12] - 2: ,7712983
- Привет ,7712983

Только номера соответственно разные.
 
Добавлено:
В окно чата они пока не должны выводится, правильно я понял? Их еще нужно как-то считывать и отправлять туда, так?
 
Добавлено:
Хотя по идее это все должно попадать в чат сразу, судя по этим строкам -

Код:
set msgfname=%chat%_%date:.=%%time::=%%RANDOM%
echo [%time:~0,-3%] - %nick%: >%msgfname%
echo - %msg% >>%msgfname%

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



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

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



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

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 17:00 05-08-2011
Mark_Titov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо тебе добрый человек, только если не затруднит в кратце хотя бы разъяснить, что бы я домчал хоть немного ))
 
Добавлено:
Weinaum

Цитата:
выложите для рубордовцев окончательный вариант.

На данный момент готовый вариант тот что в шапке (копируешь текст в батник и запускаешь).
Остальное пытаемся допилить.

Цитата:
пс. что то не то туплю, но что то никак сам не вкурю ....а как подключиться к этому чату?

Просто выкладываешь на ОБЩИЙ СЕТЕВОЙ РЕСУРС этот батник (желательно в отдельной папке), и каждый пользователь запускает его и все...
Там дальше все на русском...
НО УЧТИ ЧТО ЭТОТ ЧАТ ТОЛЬКО ДЛЯ ЛОКАЛЬНОЙ СЕТИ..! (НЕ ДЛЯ ИНТЕРНЕТА).

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



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

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну вот как-то так.
Сделал удаление старых файлов сообщений по такому сценарию как и описывал.
Немного допилил остальное.

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



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

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



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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот в этой секции проблема -

Код:
:talker_loop  
 cls  
 echo.  
 echo Ваш текст сообщения:  
 echo.  
 set "msg="  
 set /p msg=^>  
 if not defined msg goto:talker_loop  
 call:getmsgfname  
 echo [%time:~0,-3%] - %nick%: >%msgfname%    
 echo - %msg% >>%msgfname%    
 call:cs_in  
 start /min sndRec32.exe /play /close c:\WINDOWS\Media\chimes.wav 1>nul 2>nul  
 echo [%time:~0,-3%] - %nick%: >>%chat%_history  
 echo - %msg% >>%chat%_history  
 echo.>>%chat%_history  
 call:cs_out
PAUSE
 goto talker_loop  

Это сразу после нажатия на ввод. Пишет нет доступа. Это даже еще не в сети, а локально.
Паузу специально там поставил, у себя поставь там паузу и проверь пож-ста.
 
Добавлено:
Вот на эту строчку тоже ругается.

Код:
dir /b /a-d /od /tw "%~dp0\%chat%\*" >"%msgflist%"  

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



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

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



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

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

Добавил в конец 1>nul и не выводит вроде бы, но в окно чата ничего не попадает.
 
Добавлено:
А для чего временный файл в папку-то? Можно без папки же и сразу после прохождения всего пути сообщения удалять каждый раз его и все... Или я не прав?
 
Добавлено:
Я так понял что должен создаваться файл в темповой директории винды файл чата -
chatlist.txt
...но его там нет.

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



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

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



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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mark_Titov
У меня все нормально.
Проверь в каталоге %TEMP% создается файл chatlist.txt?
В него должны добавлятся имена файлов, которые были выведены на экран.
Похоже, что у тебя не создается chatlist.txt.
Может у тебя нет каталога, заданного переменной %TEMP%, проверь.
 
Для пробы можно в батнике поменять место расположения chatlist.txt и посмотреть, как будет работать.

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создается, вот что там -
 
06082011181648,625721
06082011181715,665810  
06082011181715,665810  
06082011181715,665810  
06082011181715,665810  
06082011181715,665810  

 
Добавлено:
Может ты на win7.?

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru