Autor
|
Tema: Transferencia de archivos, AYUDA (Leído 5,447 veces)
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
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 "|" . 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
|
|
|
En línea
|
|
|
|
maxnet
Desconectado
Mensajes: 65
|
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!!!
|
|
|
En línea
|
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
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. 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.
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
Intenta hacer una pausa entre cada llamada a Send. Por ejemplo con el siguiente código (incorporalo al procedimiento). Dim snTime!
snTime = Timer
Do While (Time - snTime) < .25 'Espera 0.25 segundos. Loop
Call Winsock_server.SendData("archi" & vbParseData & Buffer)
Saludos.
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
Slasher-K
Desconectado
Mensajes: 1.477
|
Ah me olvidé de ese detalle en el code que puse antes . La forma de solucionar eso sería asi: Tam = 1024 Trozos = FileLen(Arch) / Tam Falta = FileLen(Arch) Mod Falta
If Falta > 0 Then Trozos = Trozos + 1
Saludos.
|
|
|
En línea
|
A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
|
|
|
|
|
Thaorius
|
Acabo de mirar el enlace y no veo fallas evidentes. Comproba que el programa se conecta.
Saludos
|
|
|
En línea
|
|
|
|
sch3m4
Ex-Staff
Desconectado
Mensajes: 1.608
Nihil est in intelectu quod prius not fuerit insen
|
el código funciona
|
|
|
En línea
|
SafetyBits
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
-Xenon-
Desconectado
Mensajes: 502
Spectrum 128k
|
lo que necesitas lo esplico en la primera pagina de este hilo http://foro.elhacker.net/index.php/topic,57545.0.htmlalgo rustico, pero funciona 100% no tiene perdida, en la primera pagina, el 4 post que puse, si no me equivoco! espero te sirva, suerte
|
|
|
En línea
|
Cuando el ingenio se queda pequeño, No basta con poner empeño, Solo el talento consigue el diseño
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
KysendFile - Transferencia de archivos PC a PC
Software
|
taul
|
2
|
3,217
|
15 Marzo 2011, 01:08 am
por taul
|
|
|
ayuda con transferencia de archivos en C
Programación C/C++
|
Belial & Grimoire
|
0
|
1,834
|
2 Noviembre 2011, 02:18 am
por Belial & Grimoire
|
|
|
Transferencia de archivos scp
Scripting
|
dexposit
|
7
|
6,611
|
28 Diciembre 2012, 16:47 pm
por helldarkspawn
|
|
|
[Ayuda] Bypass Transferencia de Creditos IMVU
Dudas Generales
|
Yoker66666
|
0
|
2,121
|
14 Julio 2012, 14:31 pm
por Yoker66666
|
|
|
ayuda de Uso de formularios para transferencia en php
Dudas Generales
|
lnieto44
|
0
|
3,838
|
8 Junio 2016, 20:38 pm
por lnieto44
|
|