Winsock en Visual Basic

El Winsock de VB permite que los programadores envíen y que reciban mensajes.

Envía y recibe mensajes en un puerto y un IP address específicos. El artículo siguiente explicará cómo utilizar Winsock en VB y cómo construir algunos programas básicos usándolo.

Al igual que un usuario se comunica con el programa por medio del teclado, dos programas se pueden comunicar entre sí por medio de un control especial que se denomina WinSock Control. Este control esta disponible en el lenguaje Visual Basic, y su nombre proviene de Windows Sockets.

Protocolos TCP/IP y UDP
Como todos saben Internet usa el protocolo TCP/IP que significa “Transmision Control Protocol / Internet Protocol”, es el que se encarga de recibir paquetes de información y redirigirlos al usuario final que los solicitó. Este protocolo es el preferido por todos ya que posee una característica que UDP le envidia, TCP/IP puede verificar que el paquete de información haya llegado con éxito al destinatario final, concretando así la transacción.

Por el contrario UDP no puede hacer esto, solo manda el paquete con la información y no verifica que haya llegado satisfactoriamente, poniendo de esta manera en peligro al paquete, ya que puede no llegar entero al destinatario y por lo tanto no sirve si el paquete no llega en su totalidad.

Todas las máquinas que están conectadas a Internet tienen asignadas un número que se forma con 4 cifras de 3 dígitos (que no pueden superar al número 255). Ejemplo del IP máximo que se puede encontrar: 255.255.255.255

Agregando Winsock a la paletade componentes

El Winsock Control como opción predeterminada no se encuentra disponible en la barra de controles estándar de Visual Basic, para acceder a él debemos agregarlo manualmente mediante.
No es visible en tiempo de ejecución, lo que significa que solo nosotros sabemos que el control se encuentra en nuestra aplicación y cuáles son sus propiedades, aunque también se pueden definir en tiempo de ejecución
Para comenzar a usar el control del Winsock primero hay que agregar el control del Winsock a la paleta de componentes. Hacemos click con el boton derecho y luego en componentes.components.gif

Después de que abra la caja de diálogo de los componentes hay que elegir el componente llamado “Microsoft Winsock Control 6”
Una vez que hayas hecho esto aparecera un nuevo icono en la caja de la herramienta que tiene dos computadoras conectadas el uno al otro.
Genera una instancia de este objeto en el formulario y a continuacion debes configurar las propiedades basicas para empezar a usarlo.

1.Name

2.localport

3.Protocol

4.RemoteHost

5.RepotePort

1.Name
Éste es el nombre que das a ese objeto particular en VB. El nombre del defecto para este componente es Winsockn pero podes cambiarlo por el que prefieras.

2.localport
Aquí especificas el puerto en el cual el objeto del Winsock debe escuchar.

3.protocol
Esta característica permite que decidas a si desees utilizar el TCP/IP protocolo o el protocolo del UDP.

TCP/IP > 0 - sckTCPProtcol UDP > 1 - sckUDPProtocol

4.RemoteHost
Aquí das el IP address de la computadora que deseas envías mensajes.
Puede necesariamente no ser una computadora que puede también ser un servidor.
O bien si lo que necesitas es hacer un broadcast entonces debes referir el RemoteHost a 255.255.255.255.

5.RemotePort
Aquí especificas el puerto en el cual el anfitrión debe recibir el mensaje. Por ejemplo, todos los servidores de la web contestan al número de acceso 80,el MSN responde al puerto 1863, pero puedes especificar el puerto que desees.

Escuchando en un Puerto particular de la red

A continuacion creare una aplicacion muy simple en la que la funcion basica es enviar mensajes de texto a toda la red por medio de broadcast para ello utilizaremos todo lo explicado aqui, introduciremos dentro de nuestro formulario el control Winsock y configuraremos estos parametros dentro de la casilla propiedades.

name wskBroadcast

protocol 1- sckUDPProtocol

RemoteHost 255.255.255.255

RemoteProtocol 20145

luego diseñamos la aplicacion similar a esta

broddsn.jpg

aqui esta el codigo restante para el resto de los controles.

Private Sub Command1_Click()

Call send 'llamamos a la funcion que nos permite enviar nuestro mensaje

End Sub
Private Sub Command2_Click()

End

End Sub


Private Sub Form_Load()

'Separamos el puerto 20145 para usarlo en nuestra

'aplicación.

wskBroadcast.Bind 20145

End Sub


Private Sub Text1_Change()

'Cuando el txtMensaje esté vacío, deshabilitar el botón

'de envío.

Command1.Enabled = (Len(Text1.Text) > 0)

End Sub


Private Sub Text1_KeyPress(KeyAscii As Integer)

If (KeyAscii = 13) Then

Call send 'llamamos a la funcion que nos permite enviar nuestro mensaje

End If

End Sub


Private Sub Text2_Change()

'Mostrar siempre la última línea del TextBox.

Text2.SelStart = Len(Text2.Text)

End Sub


Private Sub wskBroadcast_DataArrival(ByVal bytesTotal As Long)

Dim Datos As String 'Variable para guardar los datos


'Recibe los datos y los almacena en la variable

wskBroadcast.GetData Datos


'Si txtDatosRecibidos está vacío:

If Len(Text2.Text) = 0 Then

Text2.Text = wskBroadcast.RemoteHostIP & ">" & Datos

'de lo contrario insertar primero un salto de línea y

'luego los datos.

Else

Text2.Text = Text2.Text & vbCrLf & wskBroadcast.RemoteHostIP & ">" & Datos

End If

End Sub


Sub send()

On Error Resume Next 'Para ignorar error 126 en Win9X



'Es necesario establecer nuevamente el RemoteHost y

'el puerto, para asegurarse que los paquetes se lleguen

'a enviar a todos los destinatarios.

wskBroadcast.RemoteHost = "255.255.255.255"

wskBroadcast.RemotePort = 20145


wskBroadcast.SendData Text1.Text 'Envía los datos


Text1.Text = "" 'Limpia el txtMensaje

Text1.SetFocus 'Mueve el foco hacia txtMensaje

End Sub

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

Eso es todo espero les sea de utilidad, saludos.

Anuncios

About exequielc

Hola! Estás en el blog de Exequiel Catalani. Como es un blog, se trata de una extensión más o menos lineal de las cosas que hago y pasan por mi cabeza: ciberculturas, videos de la red, nuevos medios y tecnologia, y Programacion etc...

17 responses to “Winsock en Visual Basic”

  1. Manuel Villacres says :

    Me podrias colaborar estoy realizando una aplicacion donde tengo que enviar y recibir mensajes entre clientes, la aplicacion esta en visual . net 2005 te agradeceria muhisimo si me puedes ayudar

  2. exequielc says :

    De momento no tengo tiempo, pero de todas formas enviame los fuentes por correo y los reviso.

    Saludos

  3. Edgar says :

    Es un gusto saludarte, deseo pedirte por favor si puedes decirme como hacer una rutina para enviar informacion hacia un puerto alterno de una central telefonica que a la vez me identifique me identifique los datos en la consola que se le estan enviando ejemplo. el nombre y la extension de donde me llaman.

  4. Edgar says :

    Es un gusto saludarte, deseo pedirte por favor si puedes decirme como hacer una rutina para enviar informacion hacia un puerto alterno de una central telefonica que a la vez me identifique los datos en la consola que se le estan enviando ejemplo. el nombre y la extension de donde me llaman.

  5. david says :

    estoy haciendo uno de los tutoriales de Winsock control 6.0 y cuando instalo la aplicacion en otro computador no me funciona, dice que es el .RemoteHost como hago para poder colovcar una comunicacion entre computadoras con diferentes ip?

  6. Humberto says :

    Necesito ayuda.
    Tengo visual basic 2008 y nose como conectarme a internet bueno no he encontrado el dichoso Winsock

  7. Humberto says :

    Bueno parese que mi visual basic no trajo ese componente por que me he cansado de buscarlo pero nada no loe ncuentro en ningun lado ademas el programa esta en ingles

  8. rarra says :

    son una manga de penes ne las creen y no son nada pero vamo arriba!!!!!!!!!!!

  9. Humberto says :

    ¿Tiene que ver algo la version de window con no tener el Microsoft Winsock? , o es que hay versiones que vienen limitadas, he vajado ya varios visual studio y ninguno lo trae es problema de mi window o son los paquetes que descargue

  10. maferiana says :

    Buenas, queria saber si puedo utilizar el winsock con visual basic 2005 express edition y por medio de el encontrar equipos que se encuentren conectados a la red local

  11. jose mauricio says :

    uisiera saber si pueden ayudar, hice un programa y despues de haber terminado me dijeron q era a trabajar en mas de una pc, com lo debo hacer, quin me pued acesorar???

  12. Flor says :

    Hola de todos los tutoriales que veo de winsock el tuyo es el mejor, me han pedido que capture las llamadas de una central Panasonic KXTDE100 por medio de su puerto ip 192.168.1.101 puerto 23000 y que lo guarde en un archivo de texto que cambie de nombre cada 5 minutos, te agradecere si me puedes dar una ayuda.
    Nuevamente muchas gracias.

  13. Arcangel says :

    Tienen que descargar el MSWINSCK.OCX de internet, despues guardarlo en la carpeta system32, y registrar el archivo en la opcción ejecutar poniendo :

    regsvr32 c:\windows\system32\MSWINSCK.OCX

    despues de esto buscas a tu novia y tenes sexo, despues de so verificar si está el microsoft winsock ..
    : ) sino funciona registrenlo via cmd o dos. Chau : ).Si son programadores o aprendices manden mensajes :p..Estoy aprendiendo O_O…

  14. Ariel says :

    Estoy ocupando el control winsock para un proyecto de sistemas de información para una empresa de transporte público. Sólo que no se como usarlo para acceder a bases de datos remotas. ¿Alguien tiene un manual que describa ese control?

  15. SMODROVIC says :

    Gracias Arcangel!!
    Si es facil os descargais el MSWINSCK.OCX
    lo ejecutais:regsvr32 c:\windows\system32\MSWINSCK.OCX
    y en visual basic vais a componentes(click derecho,
    le dais a elegir elementos.
    dentro de elegir elementos en la segunda pestaña(Componentes COM) buscais por:
    “Microsoft winsock”
    y aceptais en la V
    Graciasss!!!!!

  16. yazmin says :

    un favor quisiera hacer un examen virtual ya esta todo solo que me falta loesencial que es que cada 5 minutos cambien def ormulario para pasar a las siguientes preguntas todo lo estoy haciendo en visula basic 2005 porfavor ayudenme

  17. Duglas says :

    Que onda gracias esta super estoy empezando a ver progra y me encanta

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: