Página 1 de 1
[Ayuda]Estructuras y repeticiones.
Publicado: 14 Mar 2014, 17:31
por emiliano
Buenas,
1º post en el foro... no sabía de esta comunidad, de hecho comencé con AutoIT viendo un tuto de 13 partes en inglés (de haberlo sabido).
No se si fue el idioma o no me quedó claro como se trabaja con las estructuras.
Ejemplo, hice un programita y que funciona, pero solo 1 vez. Por ende algo mal tengo.
Ej:
El programa manda por la funcion TCP mensajitos (intenté hacerlo con archivos y por ahora me resulta imposible que funcione, supongo que será mi 2º posto eso JA)
Código: Seleccionar todo
codigo++codigo++codigo
$input = GUICtrlCreateInput("", 48, 40, 473, 21)
$MyButton1 = GUICtrlCreateButton("Enviar", 144, 72, 260, 30, $BS_FLAT)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
TCPStartup()
$ip = InputBox("Conexion", "Ingrese IP:")
$port = InputBox("Conexion", "Ingrese puerto:")
$TCPConnect = TCPConnect($ip, $port)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $MyButton1
$send = GUICtrlRead($input)
TCPSend($TCPConnect, $send)
$send = ""
EndSwitch
WEnd
Osea, al hacer click en el Mybutton1 no debería ejecutarse la función que llamo, tantas veces como aprete el botón?, el while también no se si está bien, pero si se quedara lupeado ahi dentro, me tendría que mostrar el $send muchas veces, cosa que no hace...
En fin, espero se entienda
Gracias por la info...
Re: [Ayuda]Estructuras y repeticiones.
Publicado: 14 Mar 2014, 19:00
por Dany
Bienvenido. Si debería. puedes mostrar el código completo. o que estas tratando de hacer?
Re: [Ayuda]Estructuras y repeticiones.
Publicado: 15 Mar 2014, 12:38
por emiliano
Si no hay problema, no vi que fuera relevante, de hecho es el Gui lo que esta arriba, pero aquí adjunto el código completo.
Son 2 scripts, 1 receiver y otro de sender, la idea inicial era enviar un archivo (pero no funcionó) por lo que el fin ahora es de enviar texto (tipo chat). Ingreso ip destino, puerto y un "texto" si el receiver esta iniciado se recibe el "texto" y sale un msgbox. Esto funciona 1 vez, después cuando envío el 2º texto, nada.... (Dudo que sea el receiver el problema porque si ejecuto el script de sender 10 veces, se recibe bien los 10 mensajes..)
Codigo completo:
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 585, 443, 192, 124)
$input = GUICtrlCreateInput("", 48, 40, 473, 21)
$MyButton1 = GUICtrlCreateButton("Enviar", 144, 72, 260, 30, $BS_FLAT)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
TCPStartup()
$ip = InputBox("Conexion", "Ingrese IP:")
$port = InputBox("Conexion", "Ingrese puerto:")
$TCPConnect = TCPConnect($ip, $port)
While 1
Sleep(1)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $MyButton1
$send = GUICtrlRead($input)
TCPSend($TCPConnect, $send)
$send = ""
EndSwitch
WEnd
Re: [Ayuda]Estructuras y repeticiones.
Publicado: 15 Mar 2014, 19:14
por Dany
Te estaba escribiendo un ejemplo y se fue la luz (energia electrica)

en unos minutos te dejo un ejemplo :) saludos
EDITO:
Bueno aquí te dejo un simple ejemplo que hice.
Ejecuta Primero el Servidor. :)
Cliente:
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $Form1 = GUICreate("Cliente", 335, 165, 192, 124)
Local $Button1 = GUICtrlCreateButton("Enviar", 120, 112, 89, 33)
Local $Input1 = GUICtrlCreateInput("", 40, 24, 249, 21)
GUISetState(@SW_SHOW)
TCPStartup()
Local $TCPConnect = TCPConnect(@IPAddress1, 8000)
If $TCPConnect = -1 Then MsgBox(0, "Error", "No se pudo Conectar :(")
Local $nMsg = 0
Local $iSent = 0
Local $sData = ""
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
If $TCPConnect Then TCPCloseSocket($TCPConnect)
TCPShutdown()
ExitLoop
Case $Button1
$sData = GUICtrlRead($Input1)
If $sData <>"" Then
$iSent = TCPSend($TCPConnect, $sData)
If $iSent = StringLen($sData) Then
ConsoleWrite("Datos Enviados Correctamente" & @CRLF)
Else
ConsoleWrite("Los Datos no Fueron enviados :(" & @CRLF)
EndIf
Else
MsgBox(0, "¬¬", "Coloque algun dato en el Input Para Enviar")
EndIf
EndSwitch
WEnd
Servidor
Código: Seleccionar todo
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $Form1 = GUICreate("Servidor", 371, 217, 192, 124)
Local $Edit1 = GUICtrlCreateEdit("", 48, 24, 273, 137)
GUICtrlSetData(-1, "")
GUISetState(@SW_SHOW)
TCPStartup()
Local $TCPListen = TCPListen(@IPAddress1, 8000)
Local $TCPAccept = -1
Local $sData = ""
While 1
If $TCPAccept=-1 Then
$TCPAccept=TCPAccept($TCPListen)
EndIf
if $TCPAccept then
$sData = TCPRecv($TCPAccept, 100)
EndIf
If $sData <> "" Then GUICtrlSetData($Edit1, "Datos Recividos : " & $sData & @CRLF)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
If $TCPListen Then TCPCloseSocket($TCPListen)
TCPShutdown()
ExitLoop
EndSwitch
WEnd
Saludos

Re: [Ayuda]Estructuras y repeticiones.
Publicado: 17 Mar 2014, 13:11
por emiliano
Jajaja genio lo escribiste y 2 veces

...
Ahora me voy a poner a investigar el mio porque no funciona, comparandolo con el tuyo (que como esperaba funciona correctamente). Voy a tratar de completar mi idea inicial que es la de enviar un archivo....
Gracias de nuevo...

Re: [Ayuda]Estructuras y repeticiones.
Publicado: 17 Mar 2014, 15:56
por Dany
Para enviar un archivo no seria muy diferente.
si puedo cuando salga del trabajo escribiré un ejemplo.
Saludos
Re: [Ayuda]Estructuras y repeticiones.
Publicado: 17 Mar 2014, 17:38
por emiliano
Nono no te molestes que ya lo tengo

, de hecho, comencé con un ejemplo que descargué que abre un navegador para seleccionar el archivo y luego hace la lectura del mismo GUI. Pero yo quería fija la ubicación y después de mucho lo logré.
El único problema que estoy teniendo es que quiero que el server reciba el archivo, lo baje y luego siga en modo escucha, pero me descarga cada 1 segundo el mismo archivo (estando parado el sender), tengo que encontrar la forma de "limpiar el caño" y que vuelva a seguir "escuchando", probé con TCPShutdown y nada, no se si lo leerá de la memoria o que...
Si se complica vuelvo a preguntar

Re: [Ayuda]Estructuras y repeticiones.
Publicado: 17 Mar 2014, 18:01
por emiliano
Por hoy fue suficiente

.... No logro que reconecte automaticamente, seguro me falta algun CloseSocket o algún refresh. Aqui dejo los 2 por si ves algo mal.
Funciona correctamente, pero cuando detengo el enviar y lo vuelvo a arrancar no retoma el envío de los datos.
Server:
Código: Seleccionar todo
Dim $iMainSocket = -1, $iSocket = -1
TCPStartup()
$iMainSocket = TCPListen(@IPAddress1,8000)
While 1
If $iSocket = -1 Then
$iRet = TCPAccept($iMainSocket)
If Not @error Then $iSocket = $iRet
Else
$data = TCPRecv($iSocket,4096)
If $data <> "" Then
FileWrite("Log_"& @MDAY&"_"& @MON&"_"& @HOUR&"_"& @MIN&"_"& @SEC&".txt",$data)
$iSocket = -1
$data = ""
EndIf
EndIf
WEnd
Código: Seleccionar todo
TCPStartup()
While 1
$File = FileOpen("log.txt")
if $File = -1 then
Msgbox(0,"Error","Archivo no encontrado")
Sleep(10000)
Else
$Socket = TCPConnect(@IPAddress1, 8000)
TCPSend($Socket, FileRead($File,4096))
TCPCloseSocket($socket)
EndIf
WEnd