[tuto] guia basica cliente/servidor (en visual basic 6)

gfxgfx
 
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
gfx gfx
gfx
21208 Mensajes en 4872 Temas por 20741 Usuarios - Último usuario: semoacousymah Mayo 23, 2012, 13:13:57
*
gfx*InicioAyudarssBuscarCalendarioIngresarRegistrarsegfx
gfxgfx
0 Usuarios y 2 Visitantes están viendo este tema.       « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [tuto] guia basica cliente/servidor (en visual basic 6)  (Leído 1252 veces)
xmilesx
Principiantes
*
Desconectado Desconectado

Mensajes: 77



Ver Perfil
[tuto] guia basica cliente/servidor (en visual basic 6)
« en: Octubre 25, 2009, 03:32:33 »

bueno bueno bueno! este es mi primer topic enseñando a utilizar visual basic, esta aplicacion que vamos a programar es un cliente/servidor se crea a partir de control winsock, la gente malinga lo usa para hacer troyanos  Wink
pero nosotros lo vamos a enseñar con fines educaivos! Wink Wink Wink


okey empesemos!

para esto necesitaremos
*visual basic 6.0 (obviamente)
*paciencia
*paciencia ( la primera ves te confundis tipeando los codes y eso te frustra mucho  :'()


PROGRAMANDO EL CLIENTE

bueno empesemos!!! creamos un exe standar
y agregamos lo siguiente
*crear 4 text box
*3 botones
*un frame
*y un winsock,( para ello Ve al menú "Proyecto" y selecciona "Componentes". En la lista de componentes busca "Microsoft Winsock Control 6.0", puede ser otra versión o bien terminar con "(SP6)".Marca este control y dale al botón "Aceptar")

(intenta que quede como en la foto asi esta mas prolijo Grin Grin Grin)



en las propiedades del text1 editamos lo siguiente:
miltiline = true
scrollbars = vertical
ya hicimos los pasos previos ahora agregamos el code (luego lo explicare mas abajo )
Código
Code (vb):
Private Sub Command1_Click()
Winsock1.SendData Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Cliente >" & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text2.Text = ""
End Sub
 
Private Sub Command2_Click()
Winsock1.RemoteHost = Text3.Text
Winsock1.RemotePort = Text4.Text
Winsock1.Close
Winsock1.Connect
End Sub
 
Private Sub Command3_Click()
Winsock1.Close
Text1.Text = Text1.Text & _
"*** Conexion cerrada por el usuario." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub winsock1_connect()
Text1.Text = Text1.Text & _
"*** Conexion establecida." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub winsock1_close()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el servidor." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub
 
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer As String
Winsock1.GetData Buffer
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Servidor >" & Buffer
Text1.SelStart = Len(Text1.Text)
End Sub
 

bueno empesare a explicar el codigo  Grin Tongue Embarrassed Lips Sealed Undecided Kiss :'( Smiley Smiley Smiley Smiley
 

Código
Code (vb):
Private Sub Command2_Click()
Winsock1.RemoteHost = Text3.Text
Winsock1.RemotePort = Text4.Text
Winsock1.Close
Winsock1.Connect
End Sub

En las primeras dos líneas asignamos los datos de conexión al host remoto, como son la IP/DNS (RemoteHost) y Puerto (RemotePort).

En la última línea llamamos al método "Connect" para realizar la conexión, siempre asegurándonos que el Socket no este utilizándose. Para ello llamamos al método "Close" que se encarga de cerrar toda conexión pendiente en el Socket.
-----------------------------------------------------------------------------------------------------
si se logra la conexion salta un nuevo evento, en donde podemos realizar acciones inmediatas en el momento preciso en que se logra establecer la conexión con el servidor, el codigo es el siguiente :
Código
Code (vb):
Private Sub winsock1_connect()
Text1.Text = Text1.Text & _
"*** Conexion establecida." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub

con este code ya tenemos los lazos basicos para realizar una coneccion basica con el servidor

-------------------------------------------------------------------------------------------
También hay que tener presente que en cualquier momento el servidor nos puede cerrar la conexión, o  para ello contamos con el evento "Close", se ejecuta al perder coneccion con el servidor el code es el siguiente:


Código
Code (vb):
Private Sub winsock1_close()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el servidor." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub

como se ve en el code text1.test, se despliega un mensaje diciendo que se perdio coneccion con el servidor... cerrando previamente el socket

------------------------------------------------------------------------------
si queremos cerrar nosotros mismos la conexion llamamos nosotros mismos al metodo close  con el siguiente codigo
Código
Code (vb):
Private Sub Command3_Click()
Winsock1.Close
Text1.Text = Text1.Text & _
"*** Conexion cerrada por el usuario." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 

-----------------------ENVIANDO Y RECIBIENDO DATOS-------------------------

para enviar datos utilizaremos el metodo senddata, el code es el siguiente:

Código
Code (vb):
Private Sub Command1_Click()
Winsock1.SendData Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Cliente >" & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text2.Text = ""      
End Sub
Al método SendData solo se le pasa como parámetro el dato a enviar y este lo envía inmediatamente al servidor remoto.
----------------------------------------------------------------------------------------
Cuando el servidor remoto nos envía un dato, se nos genera el evento "DataArrival()" indicando que tenemos nueva información disponible, y esta información la  capturamos con el método "GetData":

Código
Code (vb):
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer As String
Winsock1.GetData Buffer
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Servidor >" & Buffer
Text1.SelStart = Len(Text1.Text)
End Sub

----------------------------manejo de errores------------------
En caso de producirse algún error la acción más simple de realizar es simplemente cerrar la conexión con el método "Close":

Código
Code (vb):
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub

bien esta es la primera parte del tuto espero que les alla gustado... son las cuatro de la matina y ma recontra cargo de sueño!!! les dejo el link del cliente y el sourse code!!
(all right reserved [?])

cliente.rar :
http://www.mediafire.com/?ywmaz1yzz50

mañana termino el tuto con la parte de servidor ahora tengo sueño!

PD: habria que agreagar spoilers al foro ( ahh si no va aca el tutorial cambienlo de lugar grax!! )


« Última modificación: Octubre 26, 2009, 20:16:25 por xmilesx » En línea

aron_marcos
HdL Beta
***
Desconectado Desconectado

Mensajes: 653



Ver Perfil
Re: [tuto] guia basica cliente/servidor (en visual basic 6)
« Respuesta #1 en: Octubre 25, 2009, 03:53:02 »

muy bueno che.

salu2
En línea
xmilesx
Principiantes
*
Desconectado Desconectado

Mensajes: 77



Ver Perfil
Re: [tuto] guia basica cliente/servidor (en visual basic 6)
« Respuesta #2 en: Octubre 25, 2009, 17:56:14 »

descubri que tengo una calidad expresiva de mierd**
pero we! voy a empezar a hacer la segunda parte del tuto creando el servidor

primero creamos un exe standar en visual basic 6
y le agregamos al formulario los siguientes objetos
*3 textbox
*3 botones
*un winsock
*y un frame para que quede mas lindo  Smiley Tongue Embarrassed

la imagen es el modelo a seguir



como en el anterior, editamos las propiedades del text box1:
multiline = true
scrollbars = vertical

PROGRAMANDO EL SERVIDOR


bueno como hise arriba, voy a dar el code y lo voy a explicar (ahhh sin spoilers queda medio largo el tuto Grin Grin Grin...)

Código
Code (vb):
Private Sub Command2_Click()
Winsock1.Close
Winsock1.LocalPort = Text3.Text
Winsock1.Listen
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Esuchando conexiones." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Peticion numero " & requestID & vbCrLf
Text1.SelStart = Len(Text1.Text)
Winsock1.Close
Winsock1.Accept requestID
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion aceptada, listo para interactuar." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub Command3_Click()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub Winsock1_Close()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el Cliente." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub Command1_Click()
Winsock1.SendData Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Servidor >" & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text2.Text = ""
End Sub
 
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer As String
Winsock1.GetData Buffer
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Cliente >" & Buffer
Text1.SelStart = Len(Text1.Text)
End Sub
 
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub
 

este code se mantiene a la escucha del puerto y acepta las peticiones de coneccion ( es de mono coneccion, si encuentro la fuente meto tambien el server de multiconecciones, pero con esto basta..)

para mantener la escucha en el pueto que especificamos en el text box 3 utilizamos el siguiente code
Código
Code (vb):
Private Sub Command2_Click()
Winsock1.Close
Winsock1.LocalPort = Text3.Text
Winsock1.Listen
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Esuchando conexiones." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub

la primera linea cierra la coneccion actual, para modificar los datos y realizar una coneccion nueva sin que nos de errores
la segunda linea aclara que el local port  es el que se escribe en el text box 3
la tercera linea mantiene a la escucha del puerto
el resto del code muestra un mensaje en el text box 1 (***  escuchando conecciones)
------------------------------------------------------------------------------------------------------
el socket se queda a la escucha de peticiones pero
todavia no se puede establecer una conexion por que todavia no implementamos esa parte del codigo  
para ello utilizamos el evento "ConnectionRequest()" .. el code es el siguiente

Código
Code (vb):
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Peticion numero " & requestID & vbCrLf
Text1.SelStart = Len(Text1.Text)
Winsock1.Close
Winsock1.Accept requestID
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion aceptada, listo para interactuar." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 

las primeras tres lineas del code, es decir las del text1 , muestra un mensaje en el text box 1
la cuarta linea del codigo (winsock1.close) dice que cierre la coneccion con close... parece ilogico pero lo que hace es cerrar la esxuxha del puerto para despues aceptar la coneccion (accept resquetID)
el resto del code muestra un mensaje en el textbox1 (***coneccion aceptada....bla bla bla)

-------------------------------------------------------------------------------

para cerrar la coneccion con el boton desconectar utilizamos el siguiente code

Código
Code (vb):
Private Sub Command3_Click()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
 

solo vasta poner el metodo "close"
el resto del code muestra un texto en el text box 1 ( coneccion cerrada... BLA BLA BLA)

Código
Code (vb):
Private Sub Winsock1_Close()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el Cliente." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub

lo mismo que el code anterior

-----------------------ENVIANDO Y RECIBIENDO DATOS-------------------------

es identico al cliente, no necesita explicacion

Código
Code (vb):
Private Sub Command1_Click()
Winsock1.SendData Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Servidor >" & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text2.Text = ""
End Sub
 
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer As String
Winsock1.GetData Buffer
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Cliente >" & Buffer
Text1.SelStart = Len(Text1.Text)
End Sub
 

------------MANEJO DE ERRORES--------------------------------------
el mismo code que utilizamos en el cliente

Código
Code (vb):
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub
 

listo el pollo! ya podemos usarlo, generamos el proyecto.exe


lo que nos quedo es una especie de chat =P elegiomos un puerto y le damos escuchar (woow! me quedo un versito!)


en el programa cliente ponemos en el servidor localhost y en el puerto, el puerto que ustedes habian elegido



cuando conectas en el cliente esto susede en el servidor



bueno escribis cualquier cosa y le das enviar ( en el textbox 2, obvio..)





vieron que les decia lo de multiconecciones?¿ abran un cliente nuevo y pongan en servidor "localhost" y en puerto el mismo que pusieron mas arriba..
que paso?¿ nos tiro un error! por que? por que el programa servidor ya no esta escuchando las peticiones de coneccion del puerto que elijieron


bue  espero que les haya gustado el tuto... see later...

ahhhh! me acorde! les dejo el sourse code y el el servidor.exe

servidor.rar
http://www.mediafire.com/?emogdk0a5km

chauuuchauu!
estoy castigado.... que hacemo?¿
« Última modificación: Octubre 26, 2009, 20:17:46 por xmilesx » En línea

snf
Administrator
*****
Desconectado Desconectado

Mensajes: 692


Ver Perfil
Re: [tuto] guia basica cliente/servidor (en visual basic 6)
« Respuesta #3 en: Octubre 25, 2009, 18:36:36 »

Te felicito por el tuto.
Un poco viejo el VB6, pero esta bien, muchos empezamos a programar en VB6 y me incluyo jejeje. Aunque despues yo me arrepenti de haber empezado con VB, te incorpora malas costumbres a la programacion que me costaron dejar.

Saludos,
Seba.
En línea

Posts "interesantes"
================
Que es una shellcode?
Bad chars y encoders/decoders en payloads

El tiempo es un gran profesor, pero lamentablemente mata a todos sus alumnos.
xmilesx
Principiantes
*
Desconectado Desconectado

Mensajes: 77



Ver Perfil
Re: [tuto] guia basica cliente/servidor (en visual basic 6)
« Respuesta #4 en: Octubre 25, 2009, 18:39:59 »

Te felicito por el tuto.
Un poco viejo el VB6, pero esta bien, muchos empezamos a programar en VB6 y me incluyo jejeje. Aunque despues yo me arrepenti de haber empezado con VB, te incorpora malas costumbres a la programacion que me costaron dejar.

Saludos,
Seba.
el visual basic es un camino de ida y es un vicio que no se puede dejar... =P
En línea

gfx
Páginas: [1] Ir Arriba Imprimir 
gfx
Ir a:  
gfx
Powered by SMF 1.1.16 | SMF © 2006, Simple Machines
HDL Group hackers

gfx