Archivos Grandes no se envian y pequeños si¡¡¡¡¡ Que honda??

Iniciado por Badlands, 17 Noviembre 2006, 02:20 AM

0 Miembros y 2 Visitantes están viendo este tema.

Badlands

Hola estoy tratando de hacer un explorador remoto y resulta que cuando quiero mandar archivos al server va todo ok pero cuando intento descargar del el tengo algunos problemas, si el archivo es menor de 500kb todo joya el archivo se recive pero si supera ese tamaño el archivo nunca llega. Lo estoy provando en mi maquina (127.0.0.1). No se si alguna vez a alguno le paso esto que lo comente asi me ayuda un poco el codigo que utilizo tanto para mandar archivos al server como para recivir es el mismo pero obviamente invertido(Bue yo me entiendo). aca se los pongo aver si encuentran si hay algo que no corresponde:

CLIENTE:

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
'On Error Resume Next
Dim Data As String
ws.GetData Data

'------------------------------ ENVIO----------------------------------
If Left(Data, 8) = "SendFile" Then
Open Text1.Text For Binary As #1
Send = Space(LOF(1))
Get #1, , Send
Close #1
ws.SendData Send
End If
'--------------------------------RECIVIR-------------------------------
If Envio = True Then
DataFile = DataFile & Data
If Len(DataFile) = LenFile Then
Open nombre For Binary As #1
Put #1, , DataFile
Close #1
DataFile = ""
MsgBox "El Fichero se a Enviado Correctamente"
Envio = False
End If
End If

If Left(Data, 3) = "Tam" Then
dato = Split(Data, "|")
LenFile = dato(1)
Envio = True
ws.SendData "SendFile"
End If



SERVER:

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
ws.GetData Data
'----------------------------------RECIVE----------------------------------------
If Envio = True Then
DataFile = DataFile & Data
If Len(DataFile) = LenFile Then
Open Text1.Text For Binary As #1
Put #1, , DataFile
Close #1
DataFile = ""
MsgBox "El Fichero se a Enviado Correctamente"
Envio = False
End If
End If

If Left(Data, 7) = "archivo" Then
dato = Split(Data, "|")
LenFile = dato(1)
Namee = dato(2)
Text1.Text = "c:\" & Namee
Envio = True
ws.SendData "SendFile"
End If
'-----------------------------------ENVIA---------------------------------------
If Left(Data, 9) = "Descargar" Then
dato = Split(Data, "|")
directorioarchivo = dato(1)
ws.SendData "Tam" & "|" & FileLen(directorioarchivo)
End If

If Left(Data, 8) = "SendFile" Then
Open directorioarchivo For Binary As #1
Send = Space(LOF(1))
Get #1, , Send
Close #1
ws.SendData Send
End If

LeandroA

hola haber yo hice la prueba y no tuve ningún problema quizás te falto declarar alguna variable en el general , prova de nuevo como lo pongo yo con dos proyectos nuevos

Cliente

1 Winsock   nombre =Ws
3 commandbutton command1, command2, command3
1 Textbox1
1 CommonDialog1

CitarOption Explicit
Dim DataFile As String, LenFile As Long, Envio As Boolean, NombreDescarga As String, Send As String

Private Sub Command1_Click()
WS.Connect "127.0.0.1", 1000
End Sub

Private Sub Command2_Click()
NombreDescarga = "C:\" & Right(Text1, Len(Text1) - InStrRev(Text1, "\"))
WS.SendData "Descargar" & "|" & Text1.Text
End Sub

Private Sub Command3_Click()
On Error GoTo Salir
CommonDialog1.CancelError = True
CommonDialog1.ShowOpen
Text1 = CommonDialog1.FileName
Dim NombreEnvio As String
NombreEnvio = Right(Text1, Len(Text1) - InStrRev(Text1, "\"))
WS.SendData "archivo" & "|" & FileLen(Text1) & "|" & NombreEnvio
Exit Sub
Salir:

End Sub

Private Sub Form_Load()
'--------Cliente--------
Command1.Caption = "Conectar"
Command2.Caption = "Descargar"
Command3.Caption = "Subir al Servidor"
End Sub

Private Sub WS_Close()
WS.Close
Me.Caption = "Cliente Desconectado"
End Sub

Private Sub WS_Connect()
Me.Caption = "Cliente Conectado"
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
'On Error Resume Next
Dim Data As String
WS.GetData Data

'------------------------------ ENVIO----------------------------------
If Data = "SendFile" Then
Dim Send As String
Open Text1.Text For Binary As #1
Send = Space(LOF(1))
Get #1, , Send
Close #1
WS.SendData Send
End If
'--------------------------------RECIVIR-------------------------------
If Envio = True Then

DataFile = DataFile & Data
Me.Caption = "Recibiendo " & Len(DataFile) & " DE " & LenFile
If Len(DataFile) = LenFile Then
Open NombreDescarga For Binary As #1
Put #1, , DataFile
Close #1
DataFile = ""
MsgBox "El Fichero se a Enviado Correctamente y se guardo en " & NombreDescarga
Me.Caption = "Cliente Conectado"
Envio = False
End If
End If

If Left(Data, 3) = "Tam" Then
Dim dato As Variant
dato = Split(Data, "|")
LenFile = dato(1)
Envio = True
WS.SendData "SendFile"
End If
End Sub

Servidor

1 Winsock   nombre =Ws
1 Textbox1

Citar
Option Explicit
Dim directorioarchivo As String
Dim Send As String, DataFile As String, Namee As String, LenFile As Long, Envio As Boolean
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
Ws.Close
Ws.Accept requestID
Me.Caption = "Servidor Conectado"
End Sub

Private Sub Form_Load()
'--------Servidor--------
Ws.LocalPort = 1000
Ws.Listen
End Sub

Private Sub Ws_Close()
Ws.Close
Ws.Listen
Me.Caption = "Servidor Desconectado"
End Sub

Private Sub Ws_Connect()
Me.Caption = "Servidor Conectado"
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Data As String, Dato As Variant
Ws.GetData Data
'----------------------------------RECIVE----------------------------------------
If Envio = True Then
DataFile = DataFile & Data
Me.Caption = "Recibiendo " & Len(DataFile) & " DE " & LenFile
If Len(DataFile) = LenFile Then
Open Text1.Text For Binary As #1
Put #1, , DataFile
Close #1
DataFile = ""
MsgBox "El Fichero se a Recibido Correctamente y se guardo en" & Text1
Me.Caption = "Servidor Conectado"
Envio = False
End If
End If

If Left(Data, 7) = "archivo" Then

Dato = Split(Data, "|")
LenFile = Dato(1)
Text1.Text = "c:\" & Dato(2)
Envio = True
Ws.SendData "SendFile"
End If
'1-----------------------------------ENVIA---------------------------------------
If Left(Data, 9) = "Descargar" Then
Dato = Split(Data, "|")
directorioarchivo = Dato(1)
Ws.SendData "Tam" & "|" & FileLen(directorioarchivo)
End If

If Left(Data, 8) = "SendFile" Then
Open directorioarchivo For Binary As #1
Send = Space(LOF(1))
Get #1, , Send
Close #1
Ws.SendData Send
End If

End Sub


Saludos

Badlands

Gracias por la respuesta el codigo tuyo me andubo, me fije un poco nomas y me gusto la idea de poner la transferencia arriva de la ventana, aunque por lo que vi basicamnte es igual, mañana me voy a fijar tranquilo y con paciencia. Uno de los problemas que tengo puede ser que yo estoy utilizando los componentes file, drive  y dir, bue no se me fijo y cualquier cosa subo el codigo fuente y te fijas ahi mejor. Gracias :D

Kizar


LeandroA

bueno ya que esta yo hice un explorador remoto hace un tiempo realmente lo hice con lo que savia hasta el momento pero bueno a veces aprendiendo uno se da cuenta cuantas cosas se pueden corregir y mejorar por ejemplo yo utilize otra forma para el envio de archivos 
con lo cual me gusto mas de esta forma que vos usaste , tambien solo es balido para xp ya que usa GDIPluss para comprimir imagenes pero bien ya queda como esta jeje, fijate tiene muchas opciones

http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/explorador-remoto.htm

una versión un poco mas nueva (con la opcion de enviar comandos D.O.S

http://ar.geocities.com/leandroascierto/Explorador-Remoto.zip

Badlands

Muchachos disculpen las molestias pero sigo sin lograr encontrar el error, ademas me parece que en teoria esta todo bien, ya no se que hacer hace mucho que estoy con esto y no logro nad por eso decidi suvirlo a ver si alguna persona se digna a ayudarme.

Citarbueno ya que esta yo hice un explorador remoto hace un tiempo realmente lo hice con lo que sabia hasta el momento pero bueno a veces aprendiendo uno se da cuenta cuantas cosas se pueden corregir y mejorar por ejemplo yo utilize otra forma para el envio de archivos
con lo cual me gusto mas de esta forma que vos usaste , tambien solo es balido para xp ya que usa GDIPluss para comprimir imagenes pero bien ya queda como esta jeje, fijate tiene muchas opciones

http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/explorador-remoto.htm

una versión un poco mas nueva (con la opcion de enviar comandos D.O.S

http://ar.geocities.com/leandroascierto/Explorador-Remoto.zip

Ya habia bajado tu explorador para ver si podia basarme para hacer el mio y me parecio demasiado complejo, me encanto la idea de la vista de los iconos en miniatura, intente deducir como lo hiciste pero no tuve exito. Si me podrias explicar brevemente como lo hiciste te lo agradeceria. Bueno no los molesto mas aca les dejo mi precario explorador con todos sus bugs que lo acompañan especialmente ese de no poder descargar archivos grandes.

Gracias de antemano.

http://rapidshare.com/files/4334491/File_Manager.rar