Autor
|
Tema: solo logro hacer transferencia de archivos de menos de 2mb, que puedo hacer? (Leído 4,487 veces)
|
Proxy Lainux
Desconectado
Mensajes: 187
|
hola haber si me pueden ayudar.. lo que pasa es que estaba haciendo que mi programa de transferencia de archivos funcionara... lei el manual de eon sobre eso... solo que yo utilice el winsock.ocx y la api csocketmaster... cuando lei el manual logre entender lo que hizo eon, y lo hice como pude con el cliente y funciono bien, pero cuando mando al server algun archivo solo logro enviar un archivo de no mas de 2mb... sera acaso por la api que sucede eso?, ya que eso apenas lo intentare, utilizare el ocx en el server para ver si me hace lo mismo, pero por ahorita intente hacer varias cosas e incluso quise hacerlo exactamente como lo hizo E0N, pero no lo logro... alguien sabe si hay problemas con la api csocketmaster para transferencia de archivos?... o que puede estar pasando que solo logro enviar archivos pequeños al server...? espero me puedan ayudar.. gracias
|
|
|
En línea
|
|
|
|
Xerok1!
Desconectado
Mensajes: 228
|
Pues según parece tienes que partir el archivo en partes y enviarlas, pero así sin más información no te puedo decir seguro..Te sale algún tipo de error o algo? Un saludo
|
|
|
En línea
|
[Firma]Esperando haber si acaba el concurso de firmas y la pongo[/Firma]
|
|
|
~~
|
Hola Proxy Lainux No creo que sea problema de usar el csocketmaster o no usarlo. Por lo que dices (qunque sin ver código dificil juzgar) no debes estar enviando bien los archivos. Mirate el código de un File Manager que puse por el foro (en un post con chincheta tienes el enlace, o si no busca en google [Source] File Manager completo by E0N" o algo así ) y verás como tienes que envarlo. La idea es la siguiente, imaginemos que desde el cliente (lo que manejas en tu Pc) quieres que el server (lo que está en el Pc remoto, por aclara xD) quieres descargarte el archivo C:\hola.txt de 2500 bytes de tamaño y guardarlo en C:\recibido.txt (en tu Pc), pues la cosa sería así: - El cliente envia la orden de descargar el archivo, por ejemplo envia "descargar|C:\hola.txt"
- El servidor lee dicho archivo y le envia al cliente esto por ejemplo: "leidoOK|2500" siendo 2500 su tamaño
- El cliente almacena el valor 2500 y activa un "interruptor", es decir, al inicio del DataArrival pones un If interruptor = true... y dentro haces que todos los datos que te vayan llegando los meta en el archivo recibido, es decir, en C:\recibido.txt. A continuación manda un comando para que el server empiece a enviar el archivo, por ejemplo envia "mandar_archivo"
- El servidor manda el archivo.
- El cliente va metiendo todo lo que reciba en C:\recibido.txt hasta que el tamaño de C:\recibido.txt sea igual al tamaño que a recibido anteriormente, es decir 2500 bytes. Cuando lo tenga todo pone en false el interruptor y listo, ya puedes hacer que el "troyano" o lo que sea reciba sus órdenes con normalidad.
Esa es la idea, en el File Manager que te mencionaba antes tienes el código. Salu2 E0N
|
|
|
En línea
|
|
|
|
yovaninu
Desconectado
Mensajes: 349
|
- El servidor lee dicho archivo y le envia al cliente esto por ejemplo: "leidoOK|2500" siendo 2500 su tamaño
- El cliente almacena el valor 2500 y activa un "interruptor", es decir...
- El cliente va metiendo todo lo que reciba en C:\recibido.txt hasta que el tamaño de C:\recibido.txt sea igual al tamaño que a recibido anteriormente, es decir 2500 bytes.
Habria alguna forma de evitar que tenga que hacerse primero eso?, es decir no tener que hacer el "ida y vuelta" antes de empezar la transferencia del archivo.
|
|
|
En línea
|
|
|
|
~~
|
Pidiendo el archivo desde el cliente y poniendo el interruptor en true directamente por ejemplo y parar de leer cuando se envie la cadena "FIN ARCHIVO" por ejemplo, es una opción, se puede hacer de muchas formas esto, hay más metodos tb explicados por el foro
|
|
|
En línea
|
|
|
|
Proxy Lainux
Desconectado
Mensajes: 187
|
hola gracias por las respuestas.. pero miren, e intentado descargar archivos desde el server hacia el cliente y de mas de 20 mb y todo va perfecto... pero cuando kise hacer que el cliente envie un archivo al server como les mencione anteriormente y llego a enviar algo de mas de 2 mb, ya no se guarda, la unica diferencia es que en el server ya no use cd.ShowSave... el codigo que hice esta basado en el ejemplo de Filemanager by E0N... y me he dado cuenta de que el cliente envia mas bits del archivo original... asi que intente hacer lo mismo que hizo E0N para saber porke no estaba funcionando, en cierta forma copie o transcribi el codigo del ejemplo y el cliente sigue enviando bits de mas... esto es lo que hago... es es de un form6 del cliente
Form1.cd.DialogTitle = "Archivo a enviar" Form1.cd.ShowOpen Label3.Caption = Form1.cd.FileName trem = Split(Form1.ListView1.SelectedItem.key, "|") Form1.ws(trem(0)).SendData "envarc|" & FileLen(Form1.cd.FileName) & "|" & Text1.Text & Form1.cd.FileTitle
servidor
case envarc arev = todo(1)este guarda filelen arevs = todo(2) este guarda la direccion de donde quiero que se guarde y el nombre del archivo dat = "" ws.SendData "now"
form1 cliente
Case "now" Open Form6.Label3.Caption For Binary As #1 nos = Space(LOF(1)) Get #1, , nos Close #1 spb = Split(ListView1.SelectedItem.key, "|") ws(spb(0)).SendData nos Form6.Label3.Caption = ""
tambien intente hacer esto pero tampoco funciono for o = 1 to len(nos) cadena = mid(nos,o,10) o=o+9 spb = Split(ListView1.SelectedItem.key, "|") ws(spb(0)).SendData cadena Sleep 1 next o
servidor
If arev <> "0" Then tdata = tdata + dat If Len(tdata) = arev Then Open arevs For Binary As #1 Put #1, , tdata Close #1 arev = 0 tdata = "" arevs = "" End If End If
si se dan cuenta acabe haciendo casi un copy paste del codigo pero no me funciono
|
|
« Última modificación: 9 Junio 2008, 07:56 am por Proxy Lainux »
|
En línea
|
|
|
|
LeandroA
|
hola te pongo un ejemplo de como enviar un archivo en trozos, claro que tenes que poner la parte del tamaño y bueno vos sabes. Dim Pos As Long Dim Segment As Long Dim SegmentCount As Long Dim LenRest As Long Dim SendFileComplete As Boolean Dim FreeF As Integer Const Buffer = 4096 Dim SendingFile As Boolean Dim FileData() As Byte
Private Sub SendFile(ByVal FileName As String) Dim LenFile As Long Dim TotInteger As Long
LenFile = FileLen(FileName) SegmentCount = Val(LenFile / Buffer) TotInteger = SegmentCount * Buffer LenRest = LenFile - TotInteger Segment = 0 Pos = 1
ReDim FileData(Buffer - 1) SendingFile = True SendFileComplete = False Open FileName For Binary Access Read As #FreeF
call SendNextSegment
End Sub
Private Sub objWinSock_SendComplete() If SendingFile Then SendNextSegment End Sub
Private Function SendNextSegment()
If objWinSock.State = 7 Then If SendFileComplete Then SendingFile = False Call CloseConection 'funcion que cierra la conexion o termino el envio del archivo Exit Function End If If Segment = SegmentCount Then If LenRest > 0 Then ReDim FileData(LenRest - 1) Get FreeF, Pos, FileData Close #FreeF SendFileComplete = True If objWinSock.State = 7 Then objWinSock.SendData FileData End If Else Get #FreeF, Pos, FileData If objWinSock.State = 7 Then objWinSock.SendData FileData Pos = Pos + Buffer End If Segment = Segment + 1 End If End Function
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
NO PUEDO ABRIR ARCHIVOS VIDEO TS (VTS) PARA HACER UNA PRESENTACION EN WINDOWS M
Multimedia
|
jjgpdc
|
1
|
6,889
|
2 Octubre 2011, 14:13 pm
por Songoku
|
|
|
Practicando... no logro sniffear, ¿qué hacer?
Hacking Wireless
|
albertopv
|
4
|
4,259
|
26 Junio 2012, 12:41 pm
por -- KiLiaN --
|
|
|
hacer que un programa basado en archivos de texto funcione solo con strings
.NET (C#, VB.NET, ASP)
|
dr4
|
0
|
1,631
|
19 Mayo 2015, 15:22 pm
por dr4
|
|
|
con una tarjeta wwan que tanto puedo hacer y no hacer?
Dudas Generales
|
p4xk3
|
2
|
2,694
|
30 Diciembre 2020, 16:34 pm
por p4xk3
|
|
|
¿Qué puedo hacer para leer todo menos las tonterías de un par?
Sugerencias y dudas sobre el Foro
|
Tachikomaia
|
3
|
5,765
|
4 Noviembre 2023, 07:16 am
por Tachikomaia
|
|