bueno antes q nada aclaro q hay un poco de todos los codigos q hay en este foro... ya que de aqui aprendi a hacer esto
CLIENTE
es el que recibe los datos en este caso...
colocar:
winsock1
progressbar1
Código:
'arriba de todo si no no funciona! no se xq...
Dim Enviar As Boolean 'variable Enviar q puede ser True o False
Dim FileSize As Long 'variable q tendra el tamaño total del archivo
Dim File As String 'variable q tendra al archivo
Dim Ruta As String 'variable q tendra el destino donde se guardara el archivo
Citar
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'cuando llegan datos
Dim Datos As String 'variable en la que se introduciran todos los datos q lleguen del servidor
Dim vDatos() As String 'variable en la cual se pondran los Datos separados por "|"
'lleva () para hacer un arraid
Winsock1.GetData Datos 'obtenemos los datos
If Enviar = True Then 'pregunta si Enviar = true
File = File + Datos 'le agregamos a la variable file los datos nuevos
ProgressBar1.Max = FileSize
ProgressBar1.Min = 1
ProgressBar1.Value = Len(File)
If Len(File) = FileSize Then 'si File es igual al tamaño total del archivo...
Open Ruta For Binary As #1 'abre la ruta donde se guardara el archivo
Put #1, 1, File 'mete los datos
Close #1 'cierra el archivo
MsgBox "Archivo completado", vbInformation 'muestra un msg q termino
Enviar = False 'cancela la funcion Enviar
File = "" 'vacia la variable File
End If 'Fin de Si
End If 'Fin del Si de mas arriba
If Left(Datos, 4) = "Info" Then 'pregunta si las primeras 4 letras de la variable Datos es igual a Info...
vDatos = Split(Datos, "|") 'si es asi separa los Datos en donde alla un |
Ruta = vDatos(1) 'la variable ruta es igual a la segundo bloque de las separaciones por el |
'ejemplo si el texto era "jaja|jeje" lo q se guardaria en esta variable es "jeje"
FileSize = vDatos(2) 'hace lo mismo q antes pero con el tercer bloque
Enviar = True 'pone a la variable Enviar en verdadero para q la proxima vez q lleguen datos se ejecute la primer funcion
Winsock1.SendData "OK" 'envia OK al servidor
End If 'Fin de Si
End Sub 'Termina con la funcion
Dim Datos As String 'variable en la que se introduciran todos los datos q lleguen del servidor
Dim vDatos() As String 'variable en la cual se pondran los Datos separados por "|"
'lleva () para hacer un arraid
Winsock1.GetData Datos 'obtenemos los datos
If Enviar = True Then 'pregunta si Enviar = true
File = File + Datos 'le agregamos a la variable file los datos nuevos
ProgressBar1.Max = FileSize
ProgressBar1.Min = 1
ProgressBar1.Value = Len(File)
If Len(File) = FileSize Then 'si File es igual al tamaño total del archivo...
Open Ruta For Binary As #1 'abre la ruta donde se guardara el archivo
Put #1, 1, File 'mete los datos
Close #1 'cierra el archivo
MsgBox "Archivo completado", vbInformation 'muestra un msg q termino
Enviar = False 'cancela la funcion Enviar
File = "" 'vacia la variable File
End If 'Fin de Si
End If 'Fin del Si de mas arriba
If Left(Datos, 4) = "Info" Then 'pregunta si las primeras 4 letras de la variable Datos es igual a Info...
vDatos = Split(Datos, "|") 'si es asi separa los Datos en donde alla un |
Ruta = vDatos(1) 'la variable ruta es igual a la segundo bloque de las separaciones por el |
'ejemplo si el texto era "jaja|jeje" lo q se guardaria en esta variable es "jeje"
FileSize = vDatos(2) 'hace lo mismo q antes pero con el tercer bloque
Enviar = True 'pone a la variable Enviar en verdadero para q la proxima vez q lleguen datos se ejecute la primer funcion
Winsock1.SendData "OK" 'envia OK al servidor
End If 'Fin de Si
End Sub 'Termina con la funcion
Servidor
Winsock1
CommonDialog1
Command1
Text1
Text2
Citar
'arriba de todo si no no funciona... no se xq!!!
Dim Ruta As String 'variable donde se guardara la ruta del archivo
Dim FileSize As Long 'variable donde se guardara el tamaño del archivo
Dim File As String 'variable donde se guardara el archivo
Private Sub Command1_Click() 'cuando se le hace click al boton
CommonDialog1.ShowOpen 'abre el CommonDialog
Text1.Text = CommonDialog1.FileName 'una vez q eliges el archivo muestra su ruta en el text1
Open Text1.Text For Binary As #1 'abre esa ruta
File = Input(LOF(1), 1) 'la guarda en la variable File
Close #1 'cierra el archivo
FileSize = Len(File) 'en FileSize guarda el tamaño total del archivo
Ruta = Text2.Text 'Ruta es igual al text2.text... aqui es donde se guardara el archivo en el cliente
Winsock1.SendData "Info|" & Ruta & "|" & FileSize 'envia la palabra Info mas un separador | mas la ruta donde se guardara el archivo, otro | y el tamaño del archivo
End Sub 'fin de la funcion
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'cuando lleguen datos al winsock
Dim Datos As String 'variable donde se guardaran los datos q llegan
Winsock1.GetData Datos 'obtenemos los datos
If Datos = "OK" Then 'si los datos son igual a OK
Winsock1.SendData File 'q envie el archivo
End If 'Fin de Si
End Sub 'fin de la funcion
Dim Ruta As String 'variable donde se guardara la ruta del archivo
Dim FileSize As Long 'variable donde se guardara el tamaño del archivo
Dim File As String 'variable donde se guardara el archivo
Private Sub Command1_Click() 'cuando se le hace click al boton
CommonDialog1.ShowOpen 'abre el CommonDialog
Text1.Text = CommonDialog1.FileName 'una vez q eliges el archivo muestra su ruta en el text1
Open Text1.Text For Binary As #1 'abre esa ruta
File = Input(LOF(1), 1) 'la guarda en la variable File
Close #1 'cierra el archivo
FileSize = Len(File) 'en FileSize guarda el tamaño total del archivo
Ruta = Text2.Text 'Ruta es igual al text2.text... aqui es donde se guardara el archivo en el cliente
Winsock1.SendData "Info|" & Ruta & "|" & FileSize 'envia la palabra Info mas un separador | mas la ruta donde se guardara el archivo, otro | y el tamaño del archivo
End Sub 'fin de la funcion
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'cuando lleguen datos al winsock
Dim Datos As String 'variable donde se guardaran los datos q llegan
Winsock1.GetData Datos 'obtenemos los datos
If Datos = "OK" Then 'si los datos son igual a OK
Winsock1.SendData File 'q envie el archivo
End If 'Fin de Si
End Sub 'fin de la funcion
bueno la verdad no lo probe... lo hice muy rapido pero creo q esta bien hecho y explicado... si hay algo mal avisenme q lo modifico
despues voy a agregarle un progressbar....
pero como nunca hice uno... no se lo puse.. calculo q es secillo y si alguno me tira una idea mejor
SALUDOS::
modificado...
+ ProgressBar en el CLIENTE