Tutorial de Cliente Servidor en Visual Basic 6

Embed Size (px)

Citation preview

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    1/20

    INTRODUCCIONEste tutorial pretende explicar en forma prctica la implementacin y desarrollode aplicacionesclientey servidor, ya

    sea mono-conexin o multi-conexiones, usando el componente WinsockControl6.0 sobre el entorno de desarrollo

    de isual!asic v6.0. Cual"uier otra versin de este control deber#a funcionar tambi$n.

    %ara el se&uimiento de estetexto, se recomienda ir practicando las cosas mencionadas a la ve' "ue las vallas

    leyendo, as# podrs familiari'arte de me(or manera con el entorno y no te perders por el camino.

    )e da por entendido "ue el lector conoce el len&ua(eisual !asicy este familiari'ado con su sintaxisy metodoloadepro&ramacin.

    QUE ES CLIENTE/SERVIDOR?*ma&ino "ue esta es la primera pre&unta "ue se +arn todos, "ue es eso de cliente servidor, clienteservidor no es

    ms "ue la forma de llamar a las aplicaciones "ue traba(an en con(unto como /nodos/ deinformacinpor as#

    decirlo1. Esto es "ue existe una aplicacin totalmente independiente de la parte cliente la cual esta dispuesta

    a servirinformacin cuando el clientese la solicita.E(emplos de estos pueden ser los servidoresde %a&inas Webs 233%1, servidores de 3ransferencia

    de4rc+ivos53%1, etc.

    o podemos continuar sin antes dar una breve definicin de los t$rminos Cliente y )ervidor.

    Cliente: Es toda aplicacin que se conecta a un Servidor para solicitarle alguna informacin.

    Servidor:Es toda aplicacin que se mantiene a la espera de un cliente que solicite informacin, la cual se la

    entregara si fuese posible. Se dice que este ofrece o sirve un servicio.

    %ara "ue "uede mas claro, voy a dar un e(emplo sobre el funcionamiento del servidor de %a&inas Webs 233%1.%ara ello reali'aremos una visita a un sitioWeben particular y anali'aremos despu$s lo sucedido7

    8. E(ecutamos nuestro nave&ador *nternetExplorer, etscape,5irefox, etc.1

    9. *n&resamos la direccindel sitio Web "ue deseamos ver, por e(.:::.&oo&le.com

    ;.

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    2/20

    Estos puertos "ue +e mencionado son los acostumbrados para estos servicios, eso no "uiere decir "ue ten&a "ue

    ser siempre as#, por e(. %odemos usar el puerto F0 ComBnmente para 233%1 para ofrecer un servicio 53%, o bien

    implementar unC+ato cual"uier cosa "ue se nos ocurra. .>;6 puertos disponibles, aun"ue como

    el puerto 0 no se puede usar solo tenemos utili'ables desde el puerto 1al puerto 655!5."RE"#R#NDO EL VISU#L $#SICEl isual !asic v6.0 por defecto no esta preparado para traba(ar con aplicaciones clienteservidor, y +ace falta

    acomodar al&unas cosas antes de comen'ar a traba(ar.

    8.

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    3/20

    Con esto veremos "ue se nos a&re&a un nuevo control llamado Winsock, con el icono .

    4+ora ya nos encontramos listos para reali'ar una aplicacin Cliente)ervidor.

    DESCRI"CION DEL CO%"ONENTE &INSOC'El componente Winsock del isual !asic es el "ue permite reali'ar conexiones Cliente)ervidor a trav$s

    deprotocolos3C% y ?%. Este Bnico componente puede traba(ar de dos formas, como Cliente Conecta a un

    servidor1 y como )ervidor Decibe conexiones1, adems de poder reali'ar vectoresde Winsock lo "ue permite

    administrar varias conexiones con un mismocdi&oen comBn.

    Este componente depende directamente del control 4ctive@ G)W*)CI.C@.

    4 continuacin paso a describir las principales propiedades,m$todosyeventosdel componente.

    "ro(ied)des

    %roperty $*tesReceived4s

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    4/20

    Detornael estadode la conexion del )ocket.

    %etodos)ub #cce(tre"uest* 4s

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    5/20

    En- "rotocolConst)ntsEstos son los valorespermitidos por la propiedad "rotocol

    sck3C%%rotocol

    sck?%%rotocol

    En- ErrorConst)ntsConstantes de errores, devueltas por el evento Error.

    sck4ddress*n?se

    sck4ddressot4vailable

    sck4lreadyComplete

    sck4lreadyConnected

    sck!ad)tate

    sckConnect4borted

    sckConnectionDefused

    sckConnectionDeset

    sckLetot)upported

    sck2ostot5ound

    sck2ostot5ound3ry4&ain

    sck*n%ro&ress

    sck*nvalid4r&

    sck*nvalid4r&ument

    sck*nvalidp

    sck*nvalid%ropertyalue

    sckGs&3oo!i&

    scketDeset

    scket:ork)ubsystem5ailed

    scket:ork?nreac+able

    scko!uffer)pace

    sckoata

    sckonDecoverableError

    sckotConnected

    sckot*nitiali'ed

    sckot)ocket

    sckpCanceled

    sckutfGemory

    sckutfDan&e

    http://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtmlhttp://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtml
  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    6/20

    sck%ortot)upported

    sck)etot)upported

    sck)ocket)+utdo:n

    sck)ucces

    sck3imedout

    sck?nsupported

    sckWould!lock

    sckWron&%rotocol

    %I "RI%ER# #"LIC#CI4N CLIENTEEsta aplicacin traba(ara como un cliente simple "ue conecte a cual"uier servidor, permita enviar texto plano y a la

    ve' mostrar la informacin devuelta por este. %arecido a como traba(an losclientesde 3elnet.

    1 Cre)ndo l) inter) del s)rioDeali'a un formulario como el mostrado aba(o, con los nombres por defecto de cada control y &uarda el proyecto con

    el nombre /Cliente.vbp/.

    7 I-(le-ent)ndo l) cone+i8n

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    7/20

    %rivate )ub Command9MClick1

    Nasi&namos los datos de conexion

    Winsock8.Demote2ost O 3ext;.3ext

    Winsock8.Demote%ort O 3ext=.3ext

    Nconectamos el socket

    Winsock8.Close

    Winsock8.Connect

    End )ub

    4"u# se pueden ver claramente dos partes principales7

    En las primeras dos l#neas asi&namos los datos de conexin al +ost remoto, como son la *%) Demote2ost1 y

    %uerto Demote%ort1.

    En la Bltima l#nea llamamos alm$todo/Connect/ para reali'ar la conexin, siempre ase&urndonos "ue el )ocket no

    este utili'ndose. %ara ello llamamos al m$todo /Close/ "ue se encar&a de cerrar toda conexin pendiente en el

    )ocket.

    Nota: Tambin se puede especificar los datos de conexin !" # "uerto$ directamente en el comando %&onnect%

    como par'metros, de la sig. (orma: )insoc*+.&onnectost, "uerto$.

    )i la conexin se reali'a con $xito se dispara un evento para tal fin, en donde podemos reali'ar accionesinmediatas

    en el momento preciso en "ue se lo&ra establecer la conexin con el servidor. El evento es el si&uiente7

    %rivate )ub Winsock8MConnect1

    Ndesple&amos un mensa(e en la ventana

    3ext8.3ext O 3ext8.3ext P M

    /QQQ Conexion establecida./ P vbCr

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    8/20

    %rivate )ub Command;MClick1

    Ncierra la conexion

    Winsock8.Close

    Ndesple&amos un mensa(e en la ventana

    3ext8.3ext O 3ext8.3ext P M

    /QQQ Conexion cerrada por el usuario./ P vbCr

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    9/20

    Es muy importante tomar al&una accin cuando se produ'ca al&Bn error, aun"ue esta accin tan solo sea cerrar la

    conexin e informar al usuario de lo ocurrido.

    %ara el mane(o de errores producidos durante la conexin contamos con un evento dedicado, llamado /Error1/ el

    cual retorna varios valores para darnos informacin al respecto, entre ellos los mas comunes son7

    umber 4s *nte&er

    escription 4s )trin&En caso de producirse al&Bn error la accin ms simple de reali'ar es simplemente cerrar la conexin con el m$todo

    /Close/7

    %rivate )ub Winsock8MError!yal umber 4s *nte&er, escription 4s )trin&, !yal )code 4s

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    10/20

    )i recibimos texto desde el servidor

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    11/20

    G$todos necesarios

    -

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    12/20

    Cuando se &enera el evento lo "ue tenemos "ue +acer es /4ceptar/ la conexin entrante /re"uest*/ mediante el

    metodo /4ccept/, si no lo +acemos al lle&ar al /End )ub/ del evento, la conexin del /Cliente/ ser cerrada

    automticamente.

    4l&o interesante es ver "ue antes de aceptar la conexin con /4ccept/ primero cerramos la conexin con /Close/,

    esto "ue puede parecer il&ico no lo es, por"ue el socket lo ten#amos ocupado y activo /escuc+ando conexiones/, y

    a+ora necesitamos "ue estable'ca una conexin par a par con el cliente, por ello es "ue cerramos la funcin de

    /Escuc+ar conexiones del socket/ y le decimos "ue acepte la conexin entrante y as# automticamente se conectaen forma directa con el cliente y ya no entender nuevas conexiones entrantes. o puede reali'ar dos funcionesa

    la ve'1

    %ara cerrar la conexin basta con usar el m$todo /Close/ en cual"uier momento7

    %rivate )ub Command;MClick1

    Ncierra la conexion

    Winsock8.Close

    Ndesple&amos un mensa(e en la ventana

    3ext8.)el)tart O

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    13/20

    End )ub

    : %)ne;o de erroresEsto es id$ntico al explicado en la parte del cliente7

    %rivate )ub Winsock8MError!yal umber 4s *nte&er, escription 4s )trin&, !yal )code 4s .>;> disponibles,

    por e(. el /9;/.

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    14/20

    En el servidor obtienes7

    Aa estamos listos y traba(ando con nuestra aplicacin Cliente)ervidorVV, o lo crees, prueba a enviar texto entre

    cliente-Rservidor y servidor-Rcliente y compru$balo tu mismo7

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    15/20

    4+ora "ue sabemos "ue todo traba(a correctamente te invito a +acer una prueba ms. Con la conexin establecida y

    funcionando de par a par ente clienteservidor, e(ecuta una nueva aplicacin /Cliente/ e intenta conectar al servidor

    en el mismo puerto en este caso servidor /local+ost/ y puerto /9;/1, y espera los resultados7

    os dice "ue no lo&ra establecer la conexin, este es el mismo mensa(e "ue entre&a si el servidor al "ue intenta

    conectar o tiene nin&Bn puerto abiertoVV, lo "ue sucede es "ue el servidor ya no se encuentra /a la escuc+a de

    conexiones/ y por lo tanto no atender nuevas peticiones de conexin.

    #"LIC#CI4N SERVIDOR %ULTI

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    16/20

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    17/20

    3ext8.3ext O 3ext8.3ext P /)ock/ P i P /7)ervidor R/ P 3ext9.3ext P vbCr

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    18/20

    NCar&a un nuevo socket al arre&lo y devuelve su indice

    %rivate 5unction uevo)ocket1 4s *nte&er

    im numElementos 4s *nte&er Nnumero de sockets

    im i 4s *nte&er Ncontador

    Nobtiene la cantidad de Winsocks "ue tenemos

    numElementos O Winsock9.?!ound

    Nrecorre el arre&lo de sockets

    5or i O 0 3o numElementos

    Nsi al&un socket ya creado esta inactivo

    Nutili'a este mismo para la nueva conexion

    *f Winsock9i1.)tate O sckClosed 3+en

    uevo)ocket O i Nretorna el indice

    Exit 5unction Nabandona la funcion

    End *f

    ext

    Nsi no encuentra sockets inactivos

    Ncrea uno nuevo y devuelve su identidad

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    19/20

    4+ora e(ecuta dos aplicaciones /Cliente/ y con$ctalos al puerto /9;/ de /

  • 7/23/2019 Tutorial de Cliente Servidor en Visual Basic 6

    20/20

    2emos lle&ado al final de este tutorial, y +emos aprendido a reali'ar conexin Cliente)ervidor mono y multi-

    conexiones de forma bsica, di&o bsica por"ue +ay me(ores maneras de implementarlas y mas minuciosas, pero

    esta es la base de todas ellas, y el resto lo obtendrs por la practica.

    Espero "ue este texto les +alla sido deutilidady cual"uier duda o errores encontrados no dudes en comunicrmelo,

    "ue lo corre&ir$ tan pronto como pueda.

    %or ultimo los cdi&os fuente de los proyectosa"u# reali'ados los puedes ba(ar desde la pa&ina

    Web +ttp7:::.&emu.da.ru .

    e- :::.&emu.da.ru

    3odos losderec+osreservados )eptiembre de 900>

    http://www.monografias.com/trabajos4/costo/costo.shtmlhttp://www.monografias.com/trabajos4/costo/costo.shtmlhttp://www.monografias.com/trabajos12/pmbok/pmbok.shtmlhttp://www.gemu.da.ru/http://www.gemu.da.ru/http://www.gemu.da.ru/http://www.monografias.com/Derecho/index.shtmlhttp://www.monografias.com/Derecho/index.shtmlhttp://www.monografias.com/Derecho/index.shtmlhttp://www.monografias.com/trabajos4/costo/costo.shtmlhttp://www.monografias.com/trabajos12/pmbok/pmbok.shtmlhttp://www.gemu.da.ru/http://www.gemu.da.ru/http://www.monografias.com/Derecho/index.shtml