Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: BADBYTE-K en 31 Agosto 2003, 11:02 am



Título: introduccion al control winsock en VB
Publicado por: BADBYTE-K en 31 Agosto 2003, 11:02 am
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


Título: Re:Intro a sockets pero en visual Basic :P
Publicado por: byebye en 31 Agosto 2003, 11:16 am
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.


Título: Re:introduccion al control winsock en VB
Publicado por: BADBYTE-K en 31 Agosto 2003, 11:25 am
tienes razon puede ser fatal para cualkiera, mejor asi, mas especifico

ya esta makillado, ahora si  :D

saludox


Título: Re:introduccion al control winsock en VB
Publicado por: Syphroot en 29 Septiembre 2003, 12:36 pm
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


Título: Re:introduccion al control winsock en VB
Publicado por: Ferchu en 21 Diciembre 2003, 05:31 am
Gracias por este post, es realmente util
 :)


Título: Re:introduccion al control winsock en VB
Publicado por: ToXiC en 3 Enero 2004, 02:29 am
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......


Título: Re:introduccion al control winsock en VB
Publicado por: byebye en 3 Enero 2004, 06:04 am
se llama winsock tb. tienes un tema pinchado sobre sockets.


Título: Re:introduccion al control winsock en VB
Publicado por: L0B0_BL@NC0 en 15 Marzo 2004, 21:16 pm
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


Título: Re: introduccion al control winsock en VB
Publicado por: BADBYTE-K en 12 Abril 2004, 10:32 am
aki hay otra forma mucho mas facilisima de entender el funcionamiento del control del que les hablaba....  ;)


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


saludox


Título: Re: introduccion al control winsock en VB
Publicado por: el_chente23 en 16 Junio 2004, 12:27 pm
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) =)


Título: Re: introduccion al control winsock en VB
Publicado por: byebye en 16 Junio 2004, 16:57 pm
pues eso tiene que ser el servidor quien lo ejecute y mande la informacion al cliente.


Título: Re: introduccion al control winsock en VB
Publicado por: el_chente23 en 17 Junio 2004, 06:34 am
Me parece logico eso que comentas, ahora mi pregunta es ¿Como Puedo decirle al servidor que lo ejecute desde el cliente?  :-\


Título: Re: introduccion al control winsock en VB
Publicado por: byebye en 17 Junio 2004, 07:23 am
pues simple, te haces un "protocolo" para comunicar tu cliente con tu servidor y que se entiendan. lees lo que te mandan y segun q sea haces una cosa u otra.


Título: Re: introduccion al control winsock en VB
Publicado por: el_chente23 en 17 Junio 2004, 09:30 am
Perdon, eso no lo entendi   ???, Me Podrias Explicar Un Poco Mas Detallado Por Favor  :(


Título: Re: introduccion al control winsock en VB
Publicado por: byebye en 17 Junio 2004, 21:05 pm
pues si el cliente le manda al servidor por ejemplo esto: "HORA" que el servidor ejecute una funcion que de la hora y le mande el resultado al cliente.


Título: Re: introduccion al control winsock en VB
Publicado por: el_chente23 en 18 Junio 2004, 06:12 am
mmmm, Haber Si Entendi Mr.Potato, Dices que Yo Mande Por Ejemplo El Nombre de Una Funcion Como Parametro desde el Cliente y que el Servidor Tome ese Parametro Ejecute la Funcion y Me Devuelva el Resultado al Cliente ???


Título: Re: introduccion al control winsock en VB
Publicado por: dos_222222 en 18 Junio 2004, 07:49 am
muchachachos el link que nos mandan para bajar el ejemplo esta roto porfa verifiquenlo y actualizanlo gracias


Título: Re: introduccion al control winsock en VB
Publicado por: byebye en 18 Junio 2004, 13:53 pm
el nombre de la funcion o "algo" que el servidor entienda y sepa que tiene que hacer, no tiene mas.


Título: Re: introduccion al control winsock en VB
Publicado por: el_chente23 en 19 Junio 2004, 09:39 am
Ahora Si Ya Entendi, Inmediatamente Me Pongo a Trabajar En El Proyecto, Si Tengo Dudas Ya Se a Donde Acudir  :P.

Muchas Gracias Mr. Potato Por Tu Ayuda, Me Fue Muy Util  ;)


Título: Re: introduccion al control winsock en VB
Publicado por: IvanUgu en 20 Junio 2004, 14:12 pm
EL LINK PARA DESCARGARLO NO ANDA!!!!


Título: Re: introduccion al control winsock en VB
Publicado por: crackneo en 21 Julio 2004, 15:26 pm
leean toda la info y vean lo que puede hacer

http://www.programatium.com/01Manuales2/documentacion/docVB/3.htm


de todas maneras lo eastaba pensando con el netcat

abriendo puertos y entrar por una shell


Título: Re: introduccion al control winsock en VB
Publicado por: WiNSoCk en 30 Julio 2004, 21:41 pm
Que bonito, toda esta gente hablando de mi!!  ;D ;)

Creo que todo lo que se puede aprender con el control winsock, es tonteando con él, y haciendo mezclas de controles...

Yo, trasteo con vb, y este es uno de mis controles favoritos, por el control, sobre un acceso que se puede conseguir...

La pena es que no existen sitios para aprender todos los usos que se le podrian dar a este control...la mayoria tan solo dicen memeces, y chorradas, y en otros encuentras "¿codigos fuente?", sí...bueno los encuentras pero estan a medio programar....


Título: Re: introduccion al control winsock en VB
Publicado por: [D4N93R] en 4 Agosto 2004, 17:10 pm
si el server captura una imagen, como hago para mandarla al cliente??? no he podido he intentado de todo!!.....


Título: Re: introduccion al control winsock en VB
Publicado por: Griph en 14 Agosto 2004, 05:12 am
El dato está interesante, ayuda a comprender un poco mejor la arquitectura cliente/servidor. Por otro lado, si te dedicas al lenguaje Visual Basic resulta comprensible para aprender a utilizar el control Winsock.


Título: Re: introduccion al control winsock en VB
Publicado por: BADBYTE-K en 7 Noviembre 2004, 17:44 pm
komo que no RuLA el zip ya :(... aki arman un ejemplo online kon imagenes y todo para que medio se orienten http://www.elguruprogramador.com.ar/zonas/ver.asp?cod=63  (http://www.elguruprogramador.com.ar/zonas/ver.asp?cod=63)

saludox


Título: Re: introduccion al control winsock en VB
Publicado por: alfafa en 13 Noviembre 2004, 01:17 am
si el server captura una imagen, como hago para mandarla al cliente??? no he podido he intentado de todo!!.....

bien, debes capturar la imagen en alguna carpeta de tu sistema. Luego, en vez de enviar por winsock un mensaje de texto, envia la imagen de forma binaria: primero la abres (for binary), y lo vas cargando en una variable (puedes usar una segunda variable como buffer), luego lo mandas por el winsock y en el otro lado guardas los datos recibidos de forma binaria. Luego si quieres mostrar la imagen en el programa, cargas el archivo que has guardado en un picturebox, por ejemplo.
Si tienes dudas con el tratamiento binario, sigue posteando y ya te ayudaré.


Título: Re: introduccion al control winsock en VB
Publicado por: NekroByte en 13 Diciembre 2004, 02:05 am
Extraido de las librerías de Microsoft Developer NetWork.

Winsock (Control)

El control Winsock, invisible para el usuario, proporciona un acceso sencillo a los servicios de red TCP y UDP. Pueden usarlo los programadores de Microsoft Access, Visual Basic, Visual C++ o Visual FoxPro. Para escribir aplicaciones de servidor o de cliente no necesita comprender los detalles de TCP ni llamar a las API de Winsock de nivel inferior. Si establece las propiedades y llama a los métodos del control, podrá conectar fácilmente con un equipo remoto e intercambiar datos en las dos direcciones.

Conceptos básicos de TCP

El Protocolo de control de transferencia (TCP) le permite crear y mantener una conexión con un equipo remoto. Mediante la conexión, ambos equipos pueden intercambiar datos entre sí.

Si está creando una aplicación de cliente, debe saber el nombre del equipo servidor o su dirección IP (propiedad RemoteHost), así como el puerto (propiedad RemotePort) en el que está "escuchando". Después, llame al método Connect.

Si está creando una aplicación de servidor, establezca el puerto (propiedad LocalPort) en el que escuchar y llame al método Listen. Cuando el equipo cliente solicite una conexión, se producirá el evento ConnectionRequest. Para completar la conexión, llame al método Accept del evento ConnectionRequest.

Una vez establecida la conexión, los equipos pueden enviar y recibir datos. Para enviar datos, llame al método SendData. Siempre que se reciben datos, se produce el evento DataArrival. Llame al método GetData del evento DataArrival para recuperar los datos.

Conceptos básicos de UDP

El Protocolo de datagramas de usuarios (UDP) es un protocolo sin conexiones. A diferencia de las operaciones de TCP, los equipos no establecen una conexión. Asimismo, una aplicación UDP puede ser cliente o servidor.

Para transmitir datos, establezca primero la propiedad LocalPort del equipo cliente. El equipo servidor sólo necesita establecer RemoteHost a la dirección de Internet del equipo cliente y la propiedad RemotePort al mismo puerto que la propiedad LocalPort del equipo cliente, y llamar al método SendData para comenzar a enviar mensajes. Después, el equipo cliente utiliza el método GetData del evento DataArrival para recuperar los mensajes enviados.



Usar el control Winsock

El control WinSock permite conectarse a un equipo remoto e intercambiar datos con el Protocolo de datagramas de usuario (UDP) o con el Protocolo de control de transmisión (TCP). Ambos protocolos se pueden usar para crear aplicaciones cliente-servidor. Al igual que el control Timer, el control WinSock no tiene una interfaz visible en tiempo de ejecución.

Aplicaciones posibles
Crear una aplicación cliente que recopile información del usuario antes de enviarla a un servidor central.

Crear una aplicación servidora que funcione como un punto central de recopilación de datos procedentes de varios usuarios.

Crear una aplicación de "conversación".
Seleccionar un protocolo
Cuando utilice el control WinSock, primero debe tener en cuenta es si se va a usar el protocolo TCP o el protocolo UDP. La principal diferencia entre los dos radica en su estado de conexión:

TCP es un protocolo basado en la conexión y es análogo a un teléfono: el usuario debe establecer una conexión antes de continuar.


UDP es un protocolo sin conexión y la transacción entre los dos equipos es como pasar una nota: se envía un mensaje desde un equipo a otro, pero no existe una conexión explícita entre ambos. Además, el tamaño máximo de los datos en envíos individuales está determinado por la red.

La naturaleza de la aplicación que esté creando determinará generalmente qué protocolo debe seleccionar. He aquí varias cuestiones que pueden ayudarle a seleccionar el protocolo adecuado:

1.- ¿Necesitará la aplicación la confirmación por parte del cliente o el servidor cuando se envíen o reciban datos? Si es así, el protocolo TCP requiere una conexión explícita antes de enviar o recibir datos.

2.- ¿Será muy grande el tamaño de los datos (como en el caso de los archivos de imágenes o sonidos)? Una vez establecida la conexión, el protocolo TCP mantiene la conexión y asegura la integridad de los datos. No obstante, esta conexión utiliza más recursos del sistema, por lo que resulta más "cara".

3.- ¿Se enviarán los datos de forma intermitente o en una sesión? Por ejemplo, si está creando una aplicación que avisa a equipos específicos cuando se han completado ciertas tareas, el protocolo UDP puede ser el más apropiado. Este protocolo es también el más adecuado para enviar pequeñas cantidades de datos.

Establecer el protocolo.

Para establecer el protocolo que la aplicación va a usar: en tiempo de diseño, en la ventana Propiedades, haga clic en Protocolo y seleccione sckTCPProtocol o sckUDPProtocol. También puede establecer la propiedad Protocol en el código, como se muestra a continuación:

Código:
Winsock1.Protocol = sckTCPProtocol

Determinar el nombre del equipo.
Para conectarse a un equipo remoto, deberá saber su dirección IP o su "nombre descriptivo". La dirección IP está formada por un conjunto de tres dígitos separados por puntos (xxx.xxx.xxx.xxx). En general, es mucho más fácil recordar el nombre descriptivo de un equipo.

Para encontrar el nombre del equipo:

1.- En la Barra de tareas del equipo, haga clic en Inicio.

2.- En el elemento Configuración, haga clic en Panel de control.

3.- Haga doble clic en el icono Red.

4.- Haga clic en la ficha Identificación.

El nombre del equipo aparecerá en el cuadro Nombre del equipo.  Después de encontrar el nombre del equipo, puede usarlo como el valor de la propiedad RemoteHost.

Conceptos básicos de conexión con el protocolo TCP
Cuando crea una aplicación que utilice el protocolo TCP, deberá decidir primero si la aplicación va a ser un servidor o un cliente. Si crea un servidor, la aplicación va a "escuchar" en el puerto designado. Cuando el cliente realice una solicitud de conexión, el servidor puede aceptar la solicitud y completar así la conexión. Una vez realizada la conexión, el cliente y el servidor se podrán comunicar entre sí sin problemas.

Para crear un servidor rudimentario, realice los siguientes pasos:

Para crear un servidor TCP

1.- Cree un nuevo proyecto EXE estándar.

2.- Cambie el nombre del formulario predeterminado a frmServer.

3.- Cambie el título del formulario a "Servidor TCP".

4.- Cree un control Winsock en el formulario y cambie su nombre a tcpServer.

5.- Agregue dos controles TextBox al formulario. Llame al primero txtSendData y al segundo txtOutput.

6.- Agregue el código siguiente al formulario.

Código:
Private Sub Form_Load()
' Establece la propiedad LocalPort en un entero.
' Después invoca el método Listen.
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show     ' Muestra el formulario del cliente.
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
' Comprueba si el estado del control es cerrado.
' De lo contrario, cierra la conexión antes de
' aceptar la nueva conexión.
If tcpServer.State <> sckClosed Then _
tcpServer.Close
' Acepta la petición con el parámetro
' requestID.
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
' El control TextBox llamado txtSendData
' contiene los datos que se van a enviar. Siempre
' que el usuario escribe en el cuadro de texto,
' se envía la cadena mediante el método SendData.
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
' Declara una variable para los datos entrantes.
' Invoca el método GetData y establece la propiedad
' Text de un control TextBox llamado txtOutput
' con los datos.
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub
Los procedimientos anteriores permiten crear una aplicación de servidor sencilla. No obstante, para completar el ejemplo, deberá crear también una aplicación cliente.

Para crear un cliente de TCP

1.- Agregue un nuevo formulario al proyecto y llámelo frmClient.

2.- Cambie el título del formulario a "Cliente TCP".

3.- Agregue un control Winsock al formulario y llámelo tcpClient.

4.- Agregue dos controles TextBox a frmClient. Llame al primero txtSend y al segundo txtOutput.

5.- Cree un control CommandButton en el formulario y llámelo cmdConnect.

6.- Cambie el título del control CommandButton a Connect.

7.-Agregue el código siguiente al formulario.
Importante   Asegúrese de que cambia el valor de la propiedad RemoteHost al nombre descriptivo del equipo.

Código:
Private Sub Form_Load()
' El nombre del control Winsock es tcpClient.
' Nota: para especificar un host remoto, puede usar
' la dirección IP (como "121.111.1.1") o
' el nombre "descriptivo" del equipo, como se muestra aquí.
tcpClient.RemoteHost = "NombreEquipoRemoto"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
' Invoca el método Connect para iniciar
' una conexión.
tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub

El código anterior crea una aplicación cliente-servidor sencilla. Para probar las dos aplicaciones al mismo tiempo, ejecute el proyecto y haga clic en Conectar. A continuación, escriba texto en el control TextBox txtSendData de cualquiera de los formularios y el mismo texto aparecerá en el control TextBox txtOutput del otro formulario.

Aceptar más de una solicitud de conexión.

El servidor básico comentado anteriormente sólo acepta una solicitud de conexión. No obstante, es posible aceptar varias solicitudes de conexión con el mismo control si crea una matriz de controles. En este caso, no necesita cerrar la conexión; basta con crear una nueva instancia del control (estableciendo la propiedad Index) e invocar el método Accept de la nueva instancia.

El código que se muestra a continuación presupone que existe un control Winsock en un formulario llamado sckServer y que su propiedad Index tiene el valor 0, por lo que el control forma parte de una matriz de controles. En la sección Declaraciones se declara una variable intMax a nivel de módulo. En el evento Load del formulario, intMax tiene establecido el valor 0 y la propiedad LocalPort del primer control de la matriz tiene el valor 1001. Después, se invoca el método Listen en el control, convirtiéndolo en el control "que escucha". A medida que llega cada solicitud de conexión, el código comprueba si el índice es 0 (el valor del control "que escucha"). Si es así, este control aumenta la variable intMax y utiliza ese número para crear una nueva instancia del control. Esta instancia se utiliza para aceptar la solicitud de conexión.

Código:
Private intMax As Long

Private Sub Form_Load()
   intMax = 0
   sckServer(0).LocalPort = 1001
   sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
   If Index = 0 Then
      intMax = intMax + 1
      Load sckServer(intMax)
      sckServer(intMax).LocalPort = 0
      sckServer(intMax).Accept requestID
      Load txtData(intMax)
   End If
End Sub

Conceptos básicos del protocolo UDP.

Crear una aplicación UDP es todavía más sencillo que crear una aplicación TCP, ya que el protocolo UDP no requiere una conexión explícita. En la aplicación TCP anterior hubo que establecer explícitamente un control Winsock para "escuchar", mientras que el otro debía iniciar la conexión con el método Connect.

En cambio, el protocolo UDP no requiere una conexión explícita. Para enviar datos entre los dos controles, se deben completar tres pasos (en ambos lados de la conexión):

1.- Establezca la propiedad RemoteHost con el nombre del otro equipo.

2.- Establezca la propiedad RemotePort con la propiedad LocalPort del segundo control.

3.- Invoque el método Bind especificando la propiedad LocalPort que se va a usar. (Este método se trata detenidamente más adelante.)

Debido a que ambos equipos se pueden considerar "iguales" en la relación, se podría llamar una aplicación de igual a igual. Para demostrarlo, el siguiente código crea una aplicación de "conversación" que permite que dos personas "conversen" en tiempo real:

Para crear una aplicación UDP de igual a igual.

1.- Cree un proyecto EXE estándar.

2.- Cambie el nombre del formulario predeterminado a frmPeerA.

3.- Cambie el título del formulario a "Igual A".

4.- Cree un control Winsock en el formulario y llámelo udpPeerA.

5.- En la página Propiedades, haga clic en Protocolo y cambie el protocolo a UDPProtocol.

6.- Agregue dos controles TextBox al formulario. Llame al primero txtSend y al segundo txtOutput.

7.- Agregue el siguiente código al formulario.

Código:
Private Sub Form_Load()
' El nombre del control es udpPeerA.
With udpPeerA
' IMPORTANTE: asegúrese de cambiar el valor de
' RemoteHost al nombre de su equipo.
.RemoteHost= "IgualB"
.RemotePort = 1001   ' Puerto al que conectar.
.Bind 1002                ' Enlaza al puerto local.
End With
frmPeerB.Show                 ' Muestra el segundo formulario.
End Sub

Private Sub txtSend_Change()
' Envía texto en cuanto se escribe.
udpPeerA.SendData txtSend.Text
End Sub

Private Sub udpPeerA_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerA.GetData strData
txtOutput.Text = strData
End Sub

Para crear una segunda aplicación UDP de igual a igual.

1.- Agregue un formulario estándar al proyecto.

2.- Cambie el nombre del formulario a frmPeerB.

3.- Cambie el título del formulario a "Igual B".

4.- Cree un control Winsock en el formulario y llámelo udpPeerB.

5.- En la página Propiedades, haga clic en Protocolo y cambie el protocolo a UDPProtocol.

6.- Agregue dos controles TextBox al formulario. Llame al primero txtSend y al segundo txtOutput.

7.- Agregue el siguiente código al formulario.

Código:
Private Sub Form_Load()
' El nombre del control es udpPeerB.
With udpPeerB
' IMPORTANTE: asegúrese de cambiar el valor de
' RemoteHost al nombre de su equipo.
.RemoteHost= "IgualA"
.RemotePort = 1002    ' Puerto al que conectar.
.Bind 1001                ' Enlaza al puerto local.
End With
End Sub

Private Sub txtSend_Change()
' Envía texto en cuanto se escribe.
udpPeerB.SendData txtSend.Text
End Sub

Private Sub udpPeerB_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerB.GetData strData
txtOutput.Text = strData
End Sub

Para probar el ejemplo, presione F5 para ejecutar el proyecto y escriba texto en el control TextBox txtSend de cualquiera de los formularios. El mismo texto aparecerá en el control TextBox txtOutput del otro formulario.

Acerca del método Bind.

Tal como ilustra el código anterior, debe invocar el método Bind al crear una aplicación UDP. Este método "reserva" un puerto local para uso del control. Por ejemplo, al enlazar el control al número de puerto 1001, ninguna otra aplicación podrá usar ese puerto para "escuchar". Esto puede ser muy útil si desea impedir que otra aplicación utilice ese puerto.

El método Bind también ofrece un segundo argumento opcional. Si hay más de un adaptador de red presente en el equipo, el argumento IPlocal permite especificar qué adaptador usar. Si omite este argumento, el control usará el primer adaptador de red que aparece en la lista del cuadro de diálogo Red de la opción Configuración del Panel de control.

Si utiliza el protocolo UDP, puede cambiar libremente las propiedades RemoteHost y RemotePort mientras permanezca conectado al mismo puerto local. No obstante, con el protocolo TCP deberá cerrar la conexión antes de cambiar las propiedades RemoteHost y RemotePort.



Título: Re: introduccion al control winsock en VB
Publicado por: [D4N93R] en 16 Enero 2005, 01:44 am
MUCHAS GRACIAS ALFAFA!!, disculpenme por no responder antes, pero es que no he tenido tiempo,  y si gracias necesito ayuda con el tratamiento binario, gracias.. feliz año!!! ::)


Título: Re: introduccion al control winsock en VB
Publicado por: alfafa en 16 Enero 2005, 02:41 am
Si quieres info general sobre archivos binarios, aquí tienes un link a la página de guille a la sección que trata sobre este tema: http://www.elguille.info/vb/cursos_vb/basico/basico19.htm
En esta misma web hay un monton de articulos y cosas interesantes realcionadas con visual, APIs, etc. El manual de VB6 está muy interesante paraempezar de 0 y explica muchos aspectos del programa (vaya propaganda le hago, ni que fuera mía la web...)


Título: Re: introduccion al control winsock en VB
Publicado por: [D4N93R] en 16 Enero 2005, 03:25 am
muchas gracias ahora mismo lo veo..


Título: Re: introduccion al control winsock en VB
Publicado por: BADBYTE-K en 14 Febrero 2005, 16:04 pm

lo demas aqui o en otro hilo segun la tematica
http://foro.elhacker.net/index.php/topic,56871.0.html

bajo sugerencia de NekroByte chapo el tema este que os sirva de "principal referencia"


saludox