Título: Transferencia de archivos, AYUDA Publicado por: Kizar en 11 Julio 2005, 00:34 am Hola a todos, pues el problema es que en el trayano que estoy haciendo al enviar los archivos no les envia enteros, solo envia un poco del principio, aqui os dejo el codigo a ver si alguno encontrais el problema, por que llo llevo mas de una semana y no lo e encontrao.
Nota : "vbParseData" lo utilizo para partir los archivos a la llegada seria igual que lo que usais muchos "|" . Código: Dim i As Long Dim Arch As String Dim Buffer as string Arch = "C:\stub.log" Buffer = Space$(25000) Open Arch For Binary Access Read As #1 For i = 1 To FileLen(Arch) / 25000 'hacemos la division de las veces que tendra que leer y enviar Get #1, , Buffer 'leemos Winsock_server.SendData "archi" & vbParseData & Buffer DoEvents If FileLen(Arch) - Loc(1) <= 25000 Then 'como el for no utiliza los decimales enviamos los restos Buffer = Space$(FileLen(Arch) - Loc(1)) 'redimensianamos la variable con el num de bites que faltan Get #1, , Buffer 'leemos Winsock_server.SendData "archi" & vbParseData & Buffer DoEvents End If Next i Winsock_server.SendData "fin" Close #1 Salu2 Título: Re: Transferencia de archivos, AYUDA Publicado por: maxnet en 12 Julio 2005, 07:25 am creo que 25000 es mucho prueba con 8000 o menos o puede ser que lo envias muy rapido quita doevents y create una pausa de uno milisegundos saludos!!! Título: Re: Transferencia de archivos, AYUDA Publicado por: Slasher-K en 13 Julio 2005, 02:05 am El problema no es tu RAM sino que el ancho de banda no soporta tanto, cuando se envían datagramas por la web no deben ser muy grandes porque al pasar por tantos servidores los datos se podrían perder o peor, pueden llegar corrompidos.
Primero intenta envíar menos cantidad de datos, si no funciona se buscará otra solución. Pero igualmente esa forma de leer el archivo es media inestable, te dejo una alternativa. Código: Option Explicit Private Type FileInfo Filename As String FileSize As Long TotalPieces As Long BytesPerPiece As Long ByteRemaining As Long End Type Private Function ParseFile(Filename As String, BytesPerPiece As Long) As FileInfo With ParseFile .Filename = Filename .FileSize = FileLen(Filename) .TotalPieces = .FileSize \ BytesPerPiece .BytesPerPiece = BytesPerPiece .ByteRemaining = .FileSize Mod .ByteRemaining End With End Function Private Function CropFile(FileSpec As FileInfo) As Single Dim hFile%, snTime! Dim sData$, i& snTime = Timer With FileSpec hFile = FreeFile Open .Filename For Binary Lock Read Write As #hFile sData = String$(.BytesPerPiece, 0) For i = 1 To .TotalPieces If i < .TotalPieces Then Get #hFile, , sData Else sData = String$(.ByteRemaining, 0) Get #hFile, , sData End If 'Luego acá se enviarían los datos. ' Next End With End Function En resumen es lo mismo pero un poco más estructurado. Y si usas la API es dos veces más rápido. Saludos. Título: Re: Transferencia de archivos, AYUDA Publicado por: Slasher-K en 16 Julio 2005, 00:49 am Intenta hacer una pausa entre cada llamada a Send. Por ejemplo con el siguiente código (incorporalo al procedimiento).
Código: Dim snTime! snTime = Timer Do While (Time - snTime) < .25 'Espera 0.25 segundos. Loop Call Winsock_server.SendData("archi" & vbParseData & Buffer) Saludos. Título: Re: Transferencia de archivos, AYUDA Publicado por: Slasher-K en 16 Julio 2005, 04:54 am Ah me olvidé de ese detalle en el code que puse antes ;D. La forma de solucionar eso sería asi:
Código: Tam = 1024 Trozos = FileLen(Arch) / Tam Falta = FileLen(Arch) Mod Falta If Falta > 0 Then Trozos = Trozos + 1 Saludos. Título: Re: Transferencia de archivos, AYUDA Publicado por: Slasher-K en 17 Julio 2005, 00:16 am La instrucción Mod devuelve el resto de una división, por eso la uso para obtener lo que falta del archivo.
Saludos. Título: Re: Transferencia de archivos, AYUDA Publicado por: sch3m4 en 17 Julio 2005, 09:33 am por si a alguno le sirve, un pequeño tuto ;)
http://lympex.sosvulnerable.net/resources/textos/programacion/envio_archivos_vb.htm Título: Re: Transferencia de archivos, AYUDA Publicado por: Thaorius en 18 Julio 2005, 15:59 pm Acabo de mirar el enlace y no veo fallas evidentes. Comproba que el programa se conecta.
Saludos Título: Re: Transferencia de archivos, AYUDA Publicado por: sch3m4 en 19 Julio 2005, 14:49 pm el código funciona :)
Título: Re: Transferencia de archivos, AYUDA Publicado por: -Xenon- en 19 Julio 2005, 18:54 pm lo que necesitas lo esplico en la primera pagina de este hilo http://foro.elhacker.net/index.php/topic,57545.0.html algo rustico, pero funciona 100% no tiene perdida, en la primera pagina, el 4 post que puse, si no me equivoco! espero te sirva, suerte Título: Re: Transferencia de archivos, AYUDA Publicado por: caro.13 en 22 Julio 2005, 22:53 pm oye amigo,
entra como usuario a este foro y dale en buscar alli escribe "Troyano en visual basic" sin las comillas y alli te sale el codigo de un troyano en visual basic, que tiene lo que necesitas y mas... chito y porfa busca tambien ayuda con el Mscomm... y si puedes solucionalo. Título: Re: Transferencia de archivos, AYUDA Publicado por: sch3m4 en 26 Agosto 2005, 11:46 am lo mejor sería crear dos conexiones. Una para el envío de los datos del archivo (nombre, tamaño, etc) y otra para el envío del archivo. Es lo que hace el protocolo Ftp
Título: Re: Transferencia de archivos, AYUDA Publicado por: sch3m4 en 26 Agosto 2005, 12:16 pm vaya.... perdona ::)
Título: Re: Transferencia de archivos, AYUDA Publicado por: programatrix en 26 Agosto 2005, 13:18 pm Hace unos días hice una función que te puede servir para enviar ficheros (pequeños). No la he probado siquiera espero que funcione.
Código: Public Function enviar(ruta As String, fichero As String, extension As String) Se llama así:Dim direccion As String Dim datosfichero As String direccion = ruta & fichero & extension datosfichero = Space(EOF(1)) Open direccion For Binary Access Read As #1 Get #1, , datosfichero Close #1 Winsock1.SendData datosfichero End Function Código: enviar "C:\","imagen",".gif" Saludos ;) |