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.shtml7/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.shtmlTop Related