Enviar y recibir informacion en LAN con BATCH

Iniciado por branon32, 21 Noviembre 2019, 17:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

branon32

Pues lo que dice el titulo, tengo un montón de PCs intraconectados y quiero poder enviar y recibir informacion entre ellos a través de un archivo .bat para poder comunicarme con los compas sin que nos vea la profe :v
sit tibi terra levis

engel lex

batch es solo un manejador de archivos por lote, no es un leguaje de programacion... en pocas palabras, si no hay en la pc algun programa de inercomunicacion, batch no puede hacer nada... no se si windows tendrá algo así de fabrica...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

branon32

sit tibi terra levis

Mudereded401

Cita de: engel lex en 21 Noviembre 2019, 17:19 PM
batch es solo un manejador de archivos por lote, no es un leguaje de programacion... en pocas palabras, si no hay en la pc algun programa de inercomunicacion, batch no puede hacer nada... no se si windows tendrá algo así de fabrica...
Se Refiere a comunicarse por LAN, no por internet, Pero, Si se puede.

Ya hice un programa que lo hace, Pero como no tengo 2 computadores, No lo he probado bien, Pero por lo visto si funciona(Según un amigo mio)
Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle

Mudereded401

#4
Yo hice un pequeño programa, PERO yo no lo he podido probar por mi cuenta, Se lo dí a un amigo mio, ya que el tiene varias computadores Y yo no, me dijo Que Funcionaba Perfectamente, Asi que si no les funciona, Por favor avisadme  ;D

Primero Deben Poner Estos comandos en un Archivo .bat, Que sería el Visualizador:

Chat.bat =
@echo off
color 0b
title Visualizador

echo.
echo Ingresar Ubicacion del Servidor.txt, Encerrado en [""], Ej: "\\USER-PC\..."
echo.
set/p servidor=Servidor :

start LC-writer.bat

:a
@mode con cols=60 lines=30
cls
echo.
type %servidor%
echo.
timeout/t 1 /nobreak>nul
goto a


Luego Crean otro archivo .bat Que seria LC-Writer.bat

LC-Writer.bat =
@echo off
color 0a
title Writer
echo.
echo Ingresar Ubicacion del Servidor.txt, Encerrado en [""], Ej: "\\USER-PC\..."
echo.
set/p servidor=Servidor :
cls

echo.
set/p nombre=Ingresar nombre :

echo %nombre% Se ha unido al Chat>>%servidor%

:a
@mode con cols=60 lines=15
cls
echo.
set/p escritura=Escribe algo :
(
echo.
echo %nombre% : %escritura% ) >>%servidor%
goto a







Luego de que Hallan creado esos 2 archivos, Deben hacer un Archivo.txt, Que es donde se almacenará el Chat; Tienen que guardarlo en el computador principal, Y que los demas entren a ese PC por red (\\User-pc\blablabla), En donde dice, Ingresar Servidor; Luego se les abrirá automaticamente el Writer.bat para que Vuelvan a ingresar el servidor y a Ingresar sus nombres para que Aparezcan en la Conversacion.

PD: Servidor es El Archivo TXT que Está en el PC Principal, Solo lo llame Así porque sí, Ustedes pueden Ponerle cualquier nombre a ese .TXT.

Y eso sería todo, Si tiene algún error Por favor avisen  :)
Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle

engel lex

hmm interesante implementacion! XD a falta de recursos un archivo sobre smb! XD

muy creativo e ingenioso! ;) no se me habría ocurrido
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

branon32

#6
Muchas gracias a todos!

Al final lo resolví yo solo, al principio pensé en utilizar el comando waitfor para enviar una señal entre todos los pc para que refrescaran. Pero no funcionaba muy bien y el resultado ha sido este:


  • Uno de los ordenadores en intranet funcionará como servidor, los clientes leerán todo el chatroom en un archivo de texto dentro del servidor.

  • Dentro del servidor hay un archivo de texto (server.ccc), configuracion que leerán todos los clientes

  • En lugar de refrescar cada vez que alguien escribe un mensaje (Esto se me ocurrió para que no ande parpadeando constantemente), se refresca cada cierto tiempo (latencia establecida en la configuracion server.ccc) con timeout . Pensé que esto provocaría un parpadeo constante pero en realidad ha resultado ser completamente cómodo para la vista y no parpadea en absoluto

  • Como no he podido evitar tener que hacer dos ventanas separadas para leer y escribir en el chat respectivamente, he conseguido una "extension" que puede manejar ventanas, y así poner una siempre encima de la otra para que no estén muy separadas. Es un poco cutre pero le da el toque estúpido y rudimentario que buscaba en el chat




Por aquí os dejo el código fuente y un enlace para descargar los archivos
En la linea 19 está la dirección generalizada de todos los PCs de mi clase, así que vosotros debéis poner la vuestra personalizada

ENLACE GITHUB: https://github.com/bruneo32/TIC-CHAT

En este proyecto estoy usando 3 "extensiones" para batch:

  • Insertbmp: Sirve para insertar imagenes bmp en batch
  • Cursor: esta la hice yo con c++, sirve para colocar el cursor en cualquier posicion
  • Cmdow: esta hace muchas cosas sobre las ventanas pero yo la quería generalmente para mover la ventana del chat en funcion de la ventana de texto

Lo que yo llamo "extensiones" son archivos ejecutables (.EXE) que implementan nuevas funciones y comandos en batch

Código (dos) [Seleccionar]

@echo off
SETLOCAL EnableDelayedExpansion
mode 90,30
title TIC CHAT

REM Multiproceso
:startExtraThread
if not "%1" == "" goto %1

REM ESTO ES PARA LOS COLORES
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
 set "DEL=%%a"
)

cls
echo.
set/p "serv=Servidor: Inves"
if [%serv%]==[] exit
set "serverf=\\Inves%serv%\D\Mis Documentos\CT\_SERVER"

REM cargar datos del servidor (server.ccc)
< "%serverf%\server.ccc" (
set/p ccolor=
set/p wcolor=
set/p wtext=
set/p cfrec=
)
color %ccolor%
set file=%serverf%\roomdata

:start
cls
REM Se alternan todos los colores para limpiar el buffer de la imagen
color f0
color 0f
color %ccolor%

REM Insertar la foto
call "%serverf%\insertbmp.exe" /p:"%serverf%\banner.bmp" /x:0 /y:12 /z:100

REM Establecer la posicion del texto con 'cursor'
call "%serverf%\cursor.exe" 3 20
REM Aqui se llama a la funcion que colorea el texto
call :ColorText %wcolor% "%wtext%"
call "%serverf%\cursor.exe" 4 22
set/p "nick=Seudonimo: "
if [%nick%] == [] goto start

REM Iniciar el textbox
start "" "%0" TEXTUAL %serv% %nick% %ccolor%
call "%serverf%\cmdow" @ /TOP
echo -- %nick% se ha unido  [%time%]>> %file%

:chat
cls
color f0
color 0f
color %ccolor%

TITLE TIC CHAT2

echo.
REM Leer todos los mensajes
for /f "tokens=*" %%A in (%file%) do ( echo %%A )

REM Obtener la posicion de la ventana del textbox
for /f "tokens=2,8-9" %%a in ('%serverf%\cmdow "TIC CHAT" /p') do (
set "LEFT=%%b" & set "TOP=%%c"
)
REM Establecer la posicion de esta ventana en funcion de la otra
set/a "TOP=%TOP%+32"
call "%serverf%\cmdow" @ /MOV %LEFT% %TOP%

REM Escuchar la señal "blah" para refrescar (obsoleto)
REM waitfor "blah" /t %cfrec% >nul

timeout /t %cfrec% >nul

REM Obtener la posicion de la ventana del textbox
for /f "tokens=2,8-9" %%a in ('%serverf%\cmdow "TIC CHAT" /p') do (
set "LEFT=%%b" & set "TOP=%%c"
)
REM Establecer la posicion de esta ventana en funcion de la otra
set/a "TOP=%TOP%+32"
call "%serverf%\cmdow" @ /MOV %LEFT% %TOP%
goto chat

:TEXTUAL
REM Aqui va el textbox
TITLE TIC CHAT
mode 90,3

REM Leer variables
set "serv=%2"
set "nick=%3"
set "ccolor=%4"

set "servf=\\Inves%serv%\D\Mis Documentos\CT\_SERVER"

color %ccolor%
call "%serverf%\cmdow" @ /TOP
set file=%serverf%\roomdata

:TEXTUAL2
cls
echo.
set/p "ptext=>>> "
REM Este echo no es para mostrar un texto, sino para escribir en el archivo del server
echo [%time%] %nick% : %ptext%>> %file%
REM Enviar señal de refresco (obsoleto)
REM waitfor /si "blah">nul
goto TEXTUAL2


exit
:ColorText
REM Esta funcion sirve para dar color a un texto
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof



Mod: no hagas doble post, usa el boton modificar
sit tibi terra levis

engel lex

pregunta, por que no lo hiciste en vbs que viene implementado en windows y si es un lenguaje de verdad? (pudieras haber usado sockets)

tal vez usar python? (hay interpretes portables por si no puedes instalar nada)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Serapis

El mesenger (hablo del servicio del PC, no del cliente de correo), sirve precisamente para la comunicación en la LAN. (como es un servicio, debe estar habilitado).
El comando básico:
Net send
"Sends messages to other users, computers, or messaging names on the network.
Syntax
net send {name | * | /domain[:name] | /users} message"

Los mensajes puedes pasarlos cifrados por algún otro programa, cada día/semana acordais una clave entre todos y hale.

Recuerda que "bat" es como querer construir castillos con terrones de azúcar. Bastante ineficiente tanto en ejecución como en desarrollo.

branon32

#9
Cita de: NEBIRE en 27 Noviembre 2019, 17:21 PM
El mesenger (hablo del servicio del PC, no del cliente de correo), sirve precisamente para la comunicación en la LAN. (como es un servicio, debe estar habilitado).
El comando básico:
Net send
"Sends messages to other users, computers, or messaging names on the network.
Syntax
net send {name | * | /domain[:name] | /users} message"

Los mensajes puedes pasarlos cifrados por algún otro programa, cada día/semana acordais una clave entre todos y hale.

Recuerda que "bat" es como querer construir castillos con terrones de azúcar. Bastante ineficiente tanto en ejecución como en desarrollo.


Net send no funcionaba en mi pc xd ya lo intenté




Cita de: engel lex en 27 Noviembre 2019, 16:17 PM
pregunta, por que no lo hiciste en vbs que viene implementado en windows y si es un lenguaje de verdad? (pudieras haber usado sockets)

tal vez usar python? (hay interpretes portables por si no puedes instalar nada)

Precisamente por dar por culo (tanto a mi mismo como a mis compas)




Si a ver, si esto fuese un programa "comercial" (incluso gratuito). Pues lo haría de una forma más elegante y desde luego eficiente. Pero no olvidemos que el objetivo de este proyecto no es hacer el mejor chatroom, es hacer un chatroom con bat para que mis compas puedan intentar entender el código (por eso lo he llenado de comentarios).
sit tibi terra levis