Winsock
Winsock
| SuNcO |
Dec 28 2006, 04:36 AM
Post
#1
|
|
Administrador ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 647 Joined: 21-October 05 Member No.: 1 |
Como ya esta la seccion de Tutoriales, ahora si ya no hay excusa para no hacer este tutorial que es el que mas me piden
Vamos a crear un Servidor, esto es, un programita que reciba las conexiones e interactue con los Clientes. Es como un navegador de internet que interactua con el servidor de paginas web Nos vamos a lmenu Proyecto y luego Componentes (tambien con ctrl + t funciona) Elegimos el que dice : Microsoft Winsock 6.0 Ahora ponemos un Control y movemos estas propiedades Nombre : Servidor LocalPort : 1010 (esta la podemos poner por codigo tambien) La propiedad LocalPort nos sirve para indicar por cual puerto van a entrar la conexiones. Es como por ejemplo cuando te conectas a una pagina de internet, no nos damos cuenta pero en realidad se conecta al puerto 80 Ahora ocupamos abrir ese puerto. Ponemos en algun boton o el evento Load del formulario Servidor.Listen Ahora abrirmos otra ventana de Visual Basic donde haremos el Cliente Movemos estas propiedades (pueden moverse mediante codigo tambien) Nombre : Cliente RemoteHost : localhost (significa que es la pc local) RemotePort : 1010 Mediante un boton hacemos la conexion con el Servidor Cliente.Connect En el Servidor se dispara el evento ConnectionRequest que significa que alguien quiere conectarse. Cerramos la conexion y a la vez aceptamos la conexion Servidor.Close Servidor.Accept requestID Y en el Cliente se dispara el evento Connect Para enviar datos del Cliente al Servidor ponemos un TextBox (Mensaje) y un boton (btnEnviar). En el evento Click del boton ponemos Cliente.SendData Mensaje Al hacer esto, en el Servidor se dispara el evento DataArrival. Para leer estos datos entrantes ponemos Servidor.GetData datos Los datos quedan guardados en la variable "datos" Lo mismo podemos hacer para enviar datos del Servidor al Cliente Que otros eventos nos interesan ? Close : cuando se cierra la conexion Error : cuando hay algun error en la conexion SendComplete : cuando terminas de enviar datos SendProgress : cuando se estan enviando datos. En este evento puedes ver cuandos bytes has enviado y cuantos faltan de enviarse Propiedades ? State : para saber el estado del Socket (lo podemos poner en un Timer y un Label) Para entender un poco mejor pongo los 2 Proyectos totalmente explicados, el cliente y el servidor
cliente.zip ( 2.36k )
Number of downloads: 944
servidor.zip ( 2.1k )
Number of downloads: 686Proximamente pondre otro que permite tener varios clientes conectados al servidor |
![]() ![]() ![]() |
| Mateus |
May 17 2007, 07:46 PM
Post
#2
|
|
Nuevo ![]() Group: Members Posts: 1 Joined: 17-May 07 Member No.: 497 |
Oye te habla Mateus, te felicito por el codigo, es muy practico y funcional, pero aprovecho para hacerte otra pregunta, o duda, estuve tratando de enviar un archivo, agregando un common dialog y lo demas, pero al parecer necesito mucho mas que eso, porque al otro lado aparece como si hubiera enviado un mensaje, quisiera que me colabores para poder enviar archivos por aqui...
De antemano, te agradezco la colaboracion... |
| SuNcO |
May 17 2007, 08:18 PM
Post
#3
|
|
Administrador ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 647 Joined: 21-October 05 Member No.: 1 |
Mateus, para lo que quiere shacer (enviar un archivo por winsock), en la web tenemos un codigo que hace precisamente eso
El url es : http://www.codigoplus.com/index.php?accion...ock&categoria=1 |
| Azakur4 |
May 17 2007, 08:55 PM
Post
#4
|
|
Nuevo ![]() Group: Members Posts: 9 Joined: 28-February 06 Member No.: 133 |
uh interesante eso de enviar archivos por el winsock yo ya e estado aprendiendo de como hacer aplicaciones cliente servidor en .net usando la clase socket y thread me seria util si postean el codigo del envio de archivos por sockets para ver si lo puedo hacer en .net
por lo pronto posteare el codigo de cliente/servidor en .net hoy o maņana para los ke kieran aprender como se hace ya que en .net no se usa el winsock. ah PD: pido que posteen el codigo de como enviar archivos por el winsock debido a que no tengo vb6 This post has been edited by Azakur4: May 17 2007, 08:56 PM |
| SuNcO |
May 19 2007, 11:31 PM
Post
#5
|
|
Administrador ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 647 Joined: 21-October 05 Member No.: 1 |
El codigo de envio y recepcion de archivo es bastante sencillo
Primero hay que enviar un indicativo de que vamos a enviar un archivo y algunos datos extra.. por SendData enviamos : Sock1.SendData "|Archivo|" & FileLen("archivo.mp3") & "|archivo.mp3" Cuando la contraparte nos responda con algun comando, entonces ya podemos enviar el archivo CODE Dim tamaņo As Long Dim imagen() As Byte Open "archivo.mp3" For Binary Access Read As #1 tamaņo = LOF(1) ReDim imagen(tamaņo - 1) Get #1, , imagen Close Sock1.SendData imagen Para recibirlo (en el evento DataArrival) CODE Dim imagen() As Byte If Recibiendo = "no" Then Sock2.GetData Datos, vbString If Mid(Datos, 1, 9) = "|Archivo|" Then ' Indicadores Recibiendo = "si" TotalRecibido = 0 ' Ver cuanto mide separa = Split(Datos, "|") CuantoMide = separa(2) ' Indicarle que comienze el envio Sock2.SendData "|Ok|" ' Abrir en c:\ un archivo para guardarlo (que el archivo se llame igual pero que comienze con el caracter _) Open "c:\_" & separa(3) For Binary As #1 End If End If If Recibiendo = "si" Then ' Ir aumentando el contador TotalRecibido = TotalRecibido + bytesTotal Sock2.GetData imagen ' Guardar los Datos recibidos Put #1, , imagen ' Ver si ya termino If TotalRecibido >= CuantoMide Then ' Cerrar el archivo Close #1 Recibiendo = "no" TotalRecibido = 0 ' Mostrar mensaje MsgBox "Archivo completo" End If End If |
![]() ![]() ![]() |
| Lo-Fi Version | Time is now: 7th September 2010 - 12:16 PM |