introduccion al control winsock en VB

Iniciado por BADBYTE-K, 31 Agosto 2003, 11:02 AM

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

BADBYTE-K

pues en mis dias de buskeda de info interesante encontre por ahi este mini tutorial acerca del uso de sockets en visual basic, esta super basico e interesante, muy recomendado!

Windows Sockets

En Visual Basic disponemos de un control para acceder fácilmente a las APIs de sockets de Windows. Este se llama Winsock. Voy a exponer las principales características que necesitamos conocer para trabajar con este control, rematando el repaso con una aplicación que podremos ejecutar tanto en modo cliente, como en modo servidor; en nuestro propio equipo, o en varios.


Introducción

El control WinSock, nos proporciona un acceso sencillo a los servicios de red TCP y UDP. La diferencia entre ambos protocolos es que con TCP creamos y mantenemos una conexión entre varios equipos asegurando la integridad de los datos. Con UDP los equipos no establecen una conexión: es un protocolo sin conexiones.

Estableciendo las propiedades y llamando a los métodos del control, podremos conectar fácilmente con un equipo remoto e intercambiar datos en las dos direcciones.

Es un control visible únicamente en tiempo de diseño. En tiempo de ejecución, será invisible para el usuario.



Propiedades

LocalPort: puerto en el que se establecerá el socket (conexión) entre dos equipos. Si establecemos su valor a cero (0), el control se encargará de utilizar un puerto aleatorio.
LocalHostName: nombre de la máquina local.
LocalIP: dirección IP de la máquina local.
RemoteHost: equipo remoto al que se conecta la máquina local (puede ser un nombre de máquina o una dirección IP).
RemoteHostIP: IP del equipo remoto.
RemotePort: puerto del equipo remoto al que conectar.
State: estado de la comunicación entre los equipos. Valores:
0 - Cerrado
1 - Abierto
2 - Escuchando...
3 - Conexión pendiente
4 - Resolviendo host...
5 - Host resuelto
6 - Conectando...
7 - Conectado
8 - Cerrando
9 - Error


Métodos

Accept: acepta una petición de conexión entrante.
Bind: especifica una dirección IP y un puerto locales para establecer una conexión IP (este método lo utilizaremos cuando queramos que nuestra aplicación soporte múltiples adaptadores de protocolo).
Close: cierra una conexión
GetData: recupera el bloque actual de datos.
PeekData: como GetData.
Listen: establece la escucha por un determinado puerto.
SendData: envía datos a un equipo remoto.


Eventos

Connect: lanzado cuando un equipo remoto establece una comunicación (no cuando la creamos desde la máquina local).
Close: se produce cuando el equipo remoto cierra la conexión (no cuando la cerramos desde la máquina local).
ConnectionRequest: petición de conexión de un equipo remoto. Tendremos que llamar al método Accept para aceptarla.
DataArrival: cuando llegan datos del equipo remoto.
SendComplete: terminada una operación de envío.
SendProgress: se produce mientras se envían datos.
Error: cuando se produce un error en los procesos de segundo plano.


Ejemplo

Una vez mostradas las características básicas del control WinSock lo mejor es que lo veamos en acción. Para ello, aquí te puedes bajar un ejemplo que funciona tanto como cliente y, a la vez, como servidor (el mismo código nos sirve) estableciendo una conexión TCP. Esto, es de utilidad en una aplicación real ya que es muy probable que no sepamos cuando nuestra aplicación va a enviar o a recibir datos.

Todo el código está comentado, así que se puede apreciar perfectamente cómo trabaja el WinSock, un control muy sencillo de utilizar y al mismo tiempo, muy potente.


vaya que esta interesante este proyecto, es lo basico y todo el codigo viene comentado para que no te mueras en el intento de aprenderlo  ;D

http://www.programming-vb.com/vb/ctr_int/sockets.zip


Extraido de aki htp://www.programming-vb.com

byebye

esta muy bien el texto, pero puede llegar a confundir o desorientar. se podria decir que es introduccion al control winsock no introduccion a sockets en visual basic, ya que en visual basic puedes hacer uso de sockets como desde un programa en c,delphi etc etc sin necesidad de usar este control.

BADBYTE-K

#2
tienes razon puede ser fatal para cualkiera, mejor asi, mas especifico

ya esta makillado, ahora si  :D

saludox

Syphroot

Gracias BADBITE tu post me ayudo a entender los winsocks y para que sirven. Me supongo que estos mismos los utiliza cualquier troyano y ahora veo la posiblidad de hacer uno.(para aprender)
Gracias
salu2

Ferchu

Gracias por este post, es realmente util
:)

ToXiC

aver.. el winsock es lo k comunicaria un cliente y un server n?
k ai pa hacerlo en c? aki en VB s llama winsock  y n C?
espero respuestas......
Firma

byebye

se llama winsock tb. tienes un tema pinchado sobre sockets.

L0B0_BL@NC0

BUENO  bueno muy bueno eso si, pero una consulta, yo ya sabia como usar el winsock pero tengo muchas lagunas por ejemplo como hago para conectarme a una maquina que no tiene mi mismo tipo de ip me expico

por ejemplo supongamos que yo tengo dos IPs publicas 200.41.141.5 y otra 200.45.101.2 atraves de esas dos ips publicas hago que otros terminales salgan a internet supongamos que tengo 10 terminales por cada IP publica digamos que los dos grupos de terminales tiene distribuido un mismo sistema di IPs privadas 192.168.1.2 al 192.168.1.11  y como puerta de salida el IP 192.168.1.1 ya ok hasta alli supongo que he sido claro y mi pregunta es como hago para conectar una maquina de la red privada de la IP publica 200.41.141.5 con otra maquina de la otra IP publica 200.45.101.2    

bueno doy las gracias de antemano nos vemos hasta otra proxima duda , o una respuesta con la cual yo pueda ayudar L0B0 BL@NC0
[shadow=red,glow width, #characters wide]Es un Pequeño Poeta[/shadow]

BADBYTE-K

aki hay otra forma mucho mas facilisima de entender el funcionamiento del control del que les hablaba....  ;)


http://www.programatium.com/vb.htm


saludox

el_chente23

Todos Los Puntos Que Han Tocado En Este Tema son muy Buenos Y Utiles, Pero Tengo Duda de Como Hacer que Cuando Ya estes Conectado A La Otra Maquina, Puedas Leer La Hora del Reloj o Ejecutar Alguna Aplicacion Remotamente.

Si Me Pueden Ayudar  ::)

(Todo Esto Me Da Una Idea Para Un Programa Para Controlar El Tiempo En Un CiberCafe) =)