Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - vivachapas

#391
bueno... voy a postear un codigo que hice con una muy buena explicacion creo de como hacer para enviar archivos a travez del control winsock...

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  :P

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

CitarPrivate 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


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

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
#392
voy a hacer mi propia forma de enviar un archivo, lo pondre aca bien explicado parte por parte para ver si cerramos con este tema ;)
#393
Citardato = Split(datosSS, "|") 'una variable dato (dim dato() as string) se encarga de dividir clave, tamaño y ruta

fijate q datosSS tiene triple ese y aca:

CitarDim datosS As String
CitarIf Left(datosS, 7) = "archivo" Then

tiene solo una...


no dimencionas dato...

y bueno... fijate esos errores los encontre cuando lei las primeras lineas...
#394
pero q problema tienes?? lo quieres hacer con un solo winsock? q es lo q no entiendes... o yo no te entiendo...
#395
muy buen code... enseguida lo pruebo!!!!
#396
bien.. creo q lo entendi mas o menos...

CitarParte = Mid(Todo, o, 10)

el 10 es de 10 bites... osea q si quiero pasar de a 5 por ejemplo pongo 5 ¿?

y a este no lo entendi...

Citaro = o + 9

no tendria q ser mas 10¿?
#397
tb puedes poner asi:

Citartext1.text Chr(i) & Chr(r) & Chr(w) & VbCrLf

y luego copiar y pegar el texto... o guardarlo en un .txt
#398
como hacen para pasar de a 10 bites... o mas o menos.. yo simplemente pongo ws.senddata file... y lo envia como puede.. o como este por defecto...
y como ponen un archivo en varias string... ¿? :huh:
#399
Foro Libre / Re: Cumpleaños
5 Abril 2007, 20:42 PM
17 de enero!!!!
#400
es una excelente forma.. pero como haces a meter un archivo
(por ej: "C:\archivo.exe") de 100 mb en mas de una variable??